广告
返回顶部
首页 > 资讯 > 数据库 >字符串相似度处理函数
  • 642
分享到

字符串相似度处理函数

字符串相似度处理函数 2021-03-02 18:03:36 642人浏览 绘本
摘要

oracle里面查比如存储过程里面与表SALES有关jobs: SELECT * FROM (SELECT a.name,upper(b.what)AS what,SYS.UTL_MATCH.edit_dist

字符串相似度处理函数

oracle里面查比如存储过程里面与表SALES有关jobs:
SELECT * FROM (SELECT a.name,upper(b.what)AS what,SYS.UTL_MATCH.edit_distance_similarity
(a.name,upper(b.what)) AS similarity FROM dba_source a,dba_jobs b
WHERE  SYS.UTL_MATCH.edit_distance_similarity(a.name,upper(b.what))>80
AND upper(a.text)  LIKE "%SALES%"
AND b.what NOT LIKE "%dbms_refresh%")
ORDER BY 3 DESC;

有自带相似度函数 SYS.UTL_MATCH.edit_distance_similarity 可以直接用。

Mysql8里面我只查到了一个搜索相关的文档文档地址并不适合我自己用,找了一下大佬的文章,发现了一个能用的自定义函数,用于计算字符串相似度。

DELIMITER $$
CREATE DEFINER=`root`@`localhost` FUNCTioN `COMPARE_STRING`( s1 text, s2 text) RETURNS int(11)
    DETERMINISTIC
BEGIN 
    DECLARE s1_len, s2_len, i, j, c, c_temp, cost INT; 
    DECLARE s1_char CHAR; 
    DECLARE cv0, cv1 text; 
    SET s1_len = CHAR_LENGTH(s1), s2_len = CHAR_LENGTH(s2), cv1 = 0x00, j = 1, i = 1, c = 0; 
    IF s1 = s2 THEN 
      RETURN 0;     
    ELSEIF s1_len = 0 THEN 
      RETURN s2_len; 
    ELSEIF s2_len = 0 THEN 
      RETURN s1_len; 
    ELSE 
      WHILE j <= s2_len DO 
        SET cv1 = CONCAT(cv1, UNHEX(HEX(j))), j = j + 1; 
      END WHILE; 
      WHILE i <= s1_len DO 
        SET s1_char = SUBSTRING(s1, i, 1), c = i, cv0 = UNHEX(HEX(i)), j = 1; 
        WHILE j <= s2_len DO 
          SET c = c + 1; 
          IF s1_char = SUBSTRING(s2, j, 1) THEN  
            SET cost = 0; ELSE SET cost = 1; 
          END IF; 
          SET c_temp = CONV(HEX(SUBSTRING(cv1, j, 1)), 16, 10) + cost; 
          IF c > c_temp THEN SET c = c_temp; END IF; 
            SET c_temp = CONV(HEX(SUBSTRING(cv1, j+1, 1)), 16, 10) + 1; 
            IF c > c_temp THEN  
              SET c = c_temp;  
            END IF; 
            SET cv0 = CONCAT(cv0, UNHEX(HEX(c))), j = j + 1; 
        END WHILE; 
        SET cv1 = cv0, i = i + 1; 
      END WHILE; 
    END IF; 
    RETURN c; 
  END$$
DELIMITER ;

DELIMITER $$
CREATE DEFINER=`root`@`localhost` FUNCTION `SIMILARITY_STRING`(a text, b text) RETURNS double
BEGIN
RETURN ABS(((COMPARE_STRING(a, b) / length(b)) * 100) - 100);
END$$
DELIMITER ;

试了一下还挺好用的,一些逻辑可以自己再适当的修改。

而在gp里面,我找了许久,发现一个 fuzzystrmatch  看起来比较高档的函数,这个函数需要安装:

[gpadmin@SZWPLDB1085 ~]$ psql -d postgres -f $GPHOME/share/postgresql/contrib/fuzzystrmatch.sql
SET
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION

然后会在 postgres 库多出一些函数:

用法在文档地址

您可能感兴趣的文档:

--结束END--

本文标题: 字符串相似度处理函数

本文链接: https://www.lsjlt.com/news/5843.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 字符串相似度处理函数
    oracle里面查比如存储过程里面与表SALES有关jobs: SELECT * FROM (SELECT a.name,upper(b.what)AS what,SYS.UTL_MATCH.edit_dist...
    99+
    2021-03-02
    字符串相似度处理函数
  • Python中的字符串相似度
    目录Python字符串相似度Python相似度评估1. 在计算图片的相似度时,我自己用到过余弦距离2.欧式距离3. 曼哈顿距离4.切比雪夫距离5.闵可夫斯基距离6.标准化欧氏距离7....
    99+
    2022-11-11
  • java算法之余弦相似度计算字符串相似率
    目录概述一、理论知识1、说重点2、案例理论知识二、实际开发案例1、pom.xml2、main方法3、Tokenizer(分词工具类)4、Word(封装分词结果)5、CosineSim...
    99+
    2022-11-12
  • Python中的字符串相似度实例分析
    本文小编为大家详细介绍“Python中的字符串相似度实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python中的字符串相似度实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Python字符串相似...
    99+
    2023-06-30
  • java算法之余弦相似度计算字符串相似率的示例分析
    小编给大家分享一下java算法之余弦相似度计算字符串相似率的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Java有哪些集合类Java中的集合主要分为四类...
    99+
    2023-06-15
  • Python+fuzzywuzzy计算两个字符串之间的相似度
    fuzzywuzzy 可以计算两个字符串之间的相似度,它依据 Levenshtein Distance 算法来进行计算。该算法又叫 Edit Distance 算...
    99+
    2022-11-11
  • 字符串相似度算法-莱文斯坦距离算法
    莱文斯坦(Levenshtein)距离 莱文斯坦距离可以解决字符串相似度的问题。在莱文斯坦距离中,对每一个字符都有三种操作:删除、添加、替换例如有s1和s2两个字符串,a和b是与之对应的保存s1和s2全部字符的数组,i/j是数组下标。莱文...
    99+
    2023-01-31
    算法 字符串 文斯
  • PHP函数的字符串处理函数
    PHP是一种非常流行的编程语言,它广泛用于Web开发。在PHP中,字符串处理是非常重要的,因为Web开发中大部分的数据都是以字符串的形式出现的。为了方便开发人员对字符串进行操作,PHP提供了许多有用的字符串处理函数,它们的使用非常简单,本文...
    99+
    2023-05-19
    函数 PHP 字符串处理
  • MySQL中如何检查两个字符串之间的相似度?
    可以借助“strcmp()”函数检查两个字符串之间的相似性。条件如下。如果两个字符串相等,则返回 0。如果第一个字符串相等,则返回 0。字符串小于第二个字符串,则返回-1。如果第一个字符串大于第二个字符串,则返回1。这是一个示例。情况 1 ...
    99+
    2023-10-22
  • C/C++字符函数和字符串函数详解————长度受限制的字符串函数
    个人主页:点我进入主页 专栏分类:C语言初阶      C语言程序设计————KTV       C语言小游戏     C语言进阶 C语言刷题 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂。 目录 1.前言      ...
    99+
    2023-10-02
    c语言
  • mysql字符串处理函数大全
    ASCII():返回给定字符的ASCII值。 示例:SELECT ASCII('A'); 返回65。 BIN():将给定的整数转换为二进制字符串表示。 示例:SELECT BIN(10); 返回'10...
    99+
    2023-09-18
    mysql 数据库
  • php字符串处理函数有哪些
    php中常用的字符串处理函数有strlen()、strpos()、trim()几种strlen()函数strlen()函数作用:php中strlen()函数的作用是用于获取字符串的长度。strlen()函数语法:strlen(st...
    99+
    2022-10-07
  • MySQL 字符串截取相关函数小结
    文中给大家介绍MySQL 字符串截取相关函数,具体内容如下所示: 在工作中,可能需要将某些字段按某个分割符组成一个字符串作为字段值存取到数据库表中,比如某个任务对应三个结果,分别存储在不同的数据表中,这时可...
    99+
    2022-10-18
  • python字符串处理函数怎么使用
    Python字符串处理函数可以通过调用函数的方式来使用。以下是一些常用的字符串处理函数的示例用法:1. len() 函数:返回字符串...
    99+
    2023-09-16
    python
  • sql中有哪些字符串处理函数
    本篇文章给大家分享的是有关sql中有哪些字符串处理函数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、常用函数 1、ASCII() ...
    99+
    2022-10-18
  • boost字符串处理函数format的用法
    用boost::format来格式化字符串 在字符串处理中少不了格式化字符串,C++中传统的格式化函数是C语言的sprintf,但它一个很大的问题就是不安全。因此,在stl中引入了s...
    99+
    2022-11-13
  • Python计算字符串长度的函数
    文章目录 Python三种计算字符串长度的函数1、使用内置函数len2、使用for循环3、使用while循环和切片 代码代码展示代码运行结果 Python三种计算字符串长...
    99+
    2023-09-04
    python 开发语言 pycharm
  • boost字符串处理函数format怎么使用
    这篇文章主要介绍“boost字符串处理函数format怎么使用”,在日常操作中,相信很多人在boost字符串处理函数format怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”boost字符串处理函数f...
    99+
    2023-07-02
  • Golang函数的字符串处理和字符编码转换技巧
    Golang作为一门编程语言,它所提供的字符串处理和字符编码转换功能非常强大和丰富。本文将介绍Golang函数中常用的字符串处理和字符编码转换技巧,帮助读者更好地理解和使用Golang。一、字符串处理字符串连接在Golang中,可以使用"+...
    99+
    2023-05-18
    字符串处理 Golang函数 字符编码转换技巧
  • python 的数值和字符串和相关内建函数
    内建函数:divmod,返回商和余数模块:In [17]: from __future__ import divisionIn [18]: 5/2Out[18]: 2.5In [19]: 9/2Out[19]: 4.5In [20]: 9....
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作