UTL_MATCH介绍:

Oracle的UTL_MATCH包是一个提供字符串匹配和相似度计算功能的工具包。它包含了一系列函数,用于执行字符串比较、相似度计算和模式匹配等操作。

UTL_MATCH包中的函数可以用于以下任务:

  1. 字符串相似度计算:UTL_MATCH提供了多个函数来计算字符串之间的相似度,如Jaro-Winkler相似度、编辑距离等。

  2. 模式匹配:UTL_MATCH提供了函数来执行基于模式的匹配,如正则表达式匹配、通配符匹配等。

  3. 字符串比较:UTL_MATCH提供了函数来执行字符串的比较,如大小写敏感或不敏感的比较、基于排序规则的比较等。

  4. 字符串规范化:UTL_MATCH提供了函数来规范化字符串,如去除多余的空格、转换为大写或小写等。

UTL_MATCH包提供了一些有用的功能,可以帮助开发人员在Oracle数据库中进行字符串处理和匹配操作。请注意,使用UTL_MATCH包需要适当的权限,并且在正确的数据库环境中执行。

1、归一化编辑距离

函数:UTL_MATCH.edit_distance_similarity

  • UTL_MATCH.edit_distance_similarity是Oracle数据库中的一个函数,用于计算两个字符串之间的相似度。它基于编辑距离算法,该算法用于衡量两个字符串之间的相似程度。

  • 编辑距离是通过计算将一个字符串转换为另一个字符串所需的最少编辑操作次数来衡量的。这些编辑操作可以是插入、删除或替换字符。

  • 函数UTL_MATCH.edit_distance_similarity返回一个介于0和100之间的相似度分数,表示两个字符串之间的相似程度,其中0表示完全不相似,100表示完全相似。

  • 通过使用UTL_MATCH.edit_distance_similarity函数,您可以比较两个字符串的相似程度,并根据需要进行进一步的处理或决策。例如,您可以在搜索引擎中使用它来提供与用户查询相关的最佳匹配结果,或者在数据清洗过程中使用它来查找相似的字符串并进行合并或去重操作。

使用

1、第一个参数是要匹配的字符串,第二个参数是要与之进行匹配的字符串

SELECT UTL_MATCH.edit_distance_similarity ('param1', 'param2') AS similarity
  • 返回:84

☆2、第一个参数可以是查询表的列,您可以将表的列名作为第一个参数传递给该函数,以计算该列中每个值与指定字符串之间的相似度。

SELECT UTL_MATCH.edit_distance_similarity (列名, '6') AS similarity
SELECT UTL_MATCH.edit_distance_similarity ("列名", '6') AS similarity

实践

  • 查询表TABLE_1的C2_VARCHAR2字段的值和6匹配的相似度,并且取相似度大于2的值
SELECT
*
FROM
(
SELECT
UTL_MATCH.edit_distance_similarity (C2_VARCHAR2, '6') AS similarity,
*
FROM
TABLE_1
ORDER BY similarity DESC) AS a
WHERE
similarity >= 2

返回:

2、Jaro-Winkler相似度算法

函数:UTL_MATCH.JARO_WINKLER_SIMILARITY

Jaro-Winkler相似度是一种用于比较两个字符串之间相似程度的度量方法。它基于字符匹配和字符顺序的相似性,常用于姓名、地址等文本数据的相似度计算。

Jaro-Winkler相似度算法由William E. Winkler在1989年提出,是对Jaro相似度算法的改进。它通过计算字符匹配的数量、字符顺序的相似性以及前缀匹配的权重来确定字符串的相似度。

Jaro-Winkler相似度的计算过程如下:

  1. 计算匹配的字符数量(m):对于两个字符串,计算在相同位置上字符相等的数量。

  2. 计算相似字符交换的数量(t):对于两个字符串,计算在不同位置上字符相等但顺序不同的数量。

  3. 计算相似度(similarity):根据公式计算相似度,公式如下:

similarity = (m / |s1| + m / |s2| + (m - t) / m) / 3
  1. 计算前缀匹配的权重(prefix weight):如果两个字符串的前缀匹配,则根据公式计算前缀匹配的权重,公式如下:
prefix weight = prefixLen * p * (1 - similarity)

其中,prefixLen是前缀匹配的长度,p是一个常数(通常为0.1),similarity是相似度。

  1. 计算Jaro-Winkler相似度(JW similarity):根据公式计算Jaro-Winkler相似度,公式如下:
 JW similarity = similarity + prefix weight

Jaro-Winkler相似度的取值范围为0到100,数值越接近100表示字符串越相似。

在Oracle数据库中,可以使用UTL_MATCH包中的UTL_MATCH.JARO_WINKLER_SIMILARITY函数来计算Jaro-Winkler相似度。该函数接受两个字符串作为参数,并返回它们之间的Jaro-Winkler相似度值。

使用

-- oracle/dm实现的:Jaro-Winkler相似度算法
SELECT UTL_MATCH.JARO_WINKLER_SIMILARITY('h1e2l3l4o', 'ddddhello') AS JaroWinkler相似度;

结果

Oracle和达梦:相似度函数:UTL_MATCH的更多相关文章

  1. 全文检索- Oracle/MySql/达梦

    简单使用语法: MySql: ALTER TABLE dataset_ods ENGINE = MyISAM; //5.6后的InnoDB支持全文索引 ALTER TABLE dataset_ods ...

  2. [转帖]达梦数据库(DM6)和ORACLE 10g的异同点

    达梦数据库(DM6)和ORACLE 10g的异同点    https://bbs.aliyun.com/detail/351337.html   花花浪子 级别: 小白 发帖 0 云币 -41 加关注 ...

  3. 数据库周刊30丨数据安全法草案将亮相;2020数据库产业报告;云南电网上线达梦;达梦7误删Redo Log;Oracle存储过程性能瓶颈;易鲸捷实践案例……

    摘要:墨天轮数据库周刊第30期发布啦,每周1次推送本周数据库相关热门资讯.精选文章.干货文档. 热门资讯 1.数据安全法草案即将亮相:将确立数据分级分类管理.应急处置制度[摘要]数据安全法草案即将在本 ...

  4. Mysql/Oracle/达梦中数据字典表

    在mysql中,数据字典表存放在information_schema库中,,对应的两张表,分别是TABLES,和COLUMNS. 在oracle中有表空间(即用户空间或者库)和模式的概念.模式和表空间 ...

  5. 达梦7的试用 与SQLSERVER的简单技术对比

    达梦7的试用 与SQLSERVER的简单技术对比 达梦数据库公司推出了他们的数据库服务管理平台,可以在该平台使用达梦数据库而无须安装达梦7数据库 地址:http://online.dameng.com ...

  6. DB 查询分析器 6.03 如何灵活、快捷地操作国产达梦数据库

    DB 查询分析器 6.03 如何灵活.快捷地操作国产达梦数据库 马根峰 (广东联合电子服务股份有限公司, 广州 510300) 摘要       本文详细地介绍了"万能数据库查询分析器&qu ...

  7. .NETCore 访问国产达梦数据库

    前言 武汉达梦数据库有限公司成立于2000年,为中国电子信息产业集团(CEC)旗下基础软件企业,专业从事数据库管理系统的研发.销售与服务,同时可为用户提供大数据平台架构咨询.数据技术方案规划.产品部署 ...

  8. [开源] .Net 使用 ORM 访问 达梦数据库

    前言 武汉达梦数据库有限公司成立于2000年,为中国电子信息产业集团(CEC)旗下基础软件企业,专业从事数据库管理系统的研发.销售与服务,同时可为用户提供大数据平台架构咨询.数据技术方案规划.产品部署 ...

  9. 达梦7入门技术总结--DCA级别

    说明: 1)该实验所有过程均是本人亲自敲命令完成,所有代码运行正确 2)安装过程使用的是suse11 sp3操作系统,后续的实验过程换成了麒麟中标,因此部分路径可能存在差异 3)安装过程使用了命令行安 ...

  10. ADO连接达梦7数据库,利用OLEDB建立连接

    达梦数据库本身提供多种驱动如JDBC ODBC OLEDB等等 在安装的时候可以进行勾选. 如果不安装数据库的驱动无法与达梦数据库建立连接. 达梦数据库在数据库构成或结构上与oracle极为相似,而且 ...

随机推荐

  1. 【Spring注解驱动开发】你敢信?面试官竟然让我现场搭建一个AOP测试环境!

    写在前面 今天是9月1号,金九银十的跳槽黄金期已拉开序幕,相信很多小伙伴也在摩拳擦掌,想换一个新的工作环境.然而,由于今年疫情的影响,很多企业对于招聘的要求是越来越严格.之前,很多不被问及的知识点,最 ...

  2. verilog之简单时钟信号的编写

    verilog之简单时钟信号的编写 1.数字时钟信号 在数字电路中,时钟信号是重要的一类信号,一般作为激励源驱动时序电路.掌握时钟信号的编写,对于时序电路的仿真具有重要意义.所有的时序电路都需要设置时 ...

  3. 软件发布版本号命名风格(GUN)

    GUN风格: (1)产品初版时,版本号可以为0.1或0.1.0,也可以为1.0或1.0.0: (2)当产品进行了局部修改或bug修正时,主版本号和子版本号都不变,修正版本号+1: (3)当产品在原有的 ...

  4. #Kruskal重构树,主席树,倍增#洛谷 4197 Peaks

    题目传送门 分析 首先第\(k\)大一般都是主席树 问题是困难值的限制有点束手无措 又是\(\text{Kruskal重构树}\) 将困难值为边权跑最小生成树,重新建树,实际上让困难值跳到尽量大的位置 ...

  5. Node 项目通过 .npmrc 文件指定依赖安装源

    背景 npm 命令运行时,往往通过命令行指定相关配置,最常用的便是使用 --registry 来指定依赖的安装源. npm install --registry=https://registry.np ...

  6. OpenHarmony Meetup北京站招募令

    OpenHarmony Meetup城市巡回北京站火热来袭!!日期:2023年11月25日14:00地点:中国科学院软件园区五号楼B402与OpenHarmony技术大咖近距离互动,分享技术见解,结交 ...

  7. HMS Core Discovery第15期回顾长文|构筑立体世界,共造沉浸式营销

    本期直播,我们邀请到厦门大学信息学院副教授.B站会员购AR专家.蚂蚁特工创始人和HMS Core AR Engine技术专家一起探讨AR技术如何帮助企业打造沉浸式市场营销,引领商业化变革,同时为大家展 ...

  8. 鸿蒙HarmonyOS实战-ArkUI组件(Video)

    一.Video 视频组件是用于应用程序中嵌入视频的一种方法.它可以让用户在网站上观看视频并与其进行交互.通常,视频组件将一个视频文件嵌入应用程序中,并提供一组控件,这些控件允许用户播放.暂停.跳过.音 ...

  9. xml转voc,voc转coco,coco转yolo,coco划分,coco检查,yolo检查,coco可视化

    平常用coco格式的数据集比较多,所有这里整合一下数据集相关的常用的脚本. pycocotools安装 这个非常重要,因为处理coco数据集时,用pycocotools包非常方便. 自行搜索一下怎么安 ...

  10. szfpga 高云gowin国产开发板GW2AR-18核心板fpga cpld测试板

    1. 概述 国产FPGA是最近几年起来的产品,具有性价比高特点.而GOWIN属于国产FPGA成员,在服务和芯片都是比较大的优势,很多用户都用在LED控制,电机控制,PLC设备上,以及用于替换Latti ...