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. 性能测试系列:Oracle数据库awr报告使用与分析

    一 AWR报告生成 1.生成AWR(Automatic Workload Repository)报告:sqlplus / as sysdbaSQL>@?/rdbms/admin/awrrpt.s ...

  2. 算法学习笔记【8】| 单调队列优化DP

    单调队列:就是滑动窗口,可以求出定长 RMQ,时间复杂度线性. 优化 DP 首先把dp方程写成这个样子: 或者其他运算f[i]=max(或者其他运算){f[j]+calc(i,j)}<scrip ...

  3. IDEA代码缩略图插件CodeGlance

    打开IDEA设置Settings,选择Plugins,搜索CodeGlance. 点击Install,安装完成后重启即可. 效果如下:

  4. #裴蜀定理#CF7C Line

    题目 给定三个整数\(a,b,c\),问是否能找到两个数\(x,y\)使得\(ax+by+c=0\),没有则输出-1 分析 先把式子转换成\(ax+by=-c\) 然后\(x,y\)是整数当且仅当\( ...

  5. #拉格朗日插值,线性筛#洛谷 5442 【XR-2】约定 (加强版)

    题目 一个\(n\)个点的完全图, 第\(i\)个点到第\(j\)个点的边权是\((i+j)^k\), 现在把这个完全图变成一棵树, 求这棵树边权和的期望值 \((n\leq 10^{10000},k ...

  6. C#_面试题2

    1 :维护数据库的完整性.一致性.你喜欢用触发器还是自写业务逻辑?为什么答:尽可能用约束(包括CHECK.主键.唯一键.外键.非空字段)实现,这种方式的效率最好:其次用触发器,这种方式可以保证无论何种 ...

  7. 从零开始写 Docker(十)---实现 mydocker logs 查看容器日志

    本文为从零开始写 Docker 系列第十篇,实现类似 docker logs 的功能,使得我们能够查查看容器日志. 完整代码见:https://github.com/lixd/mydocker 欢迎 ...

  8. BI小白收藏|一文告诉你什么是商务智能

    近年来,商务智能(BI)已成为继企业资源计划之后企业信息化建设的热点领域,在国内发展迅速.利用商务智能可以为企业整合集成现有的业务数据,在深度挖掘分析的基础上为管理决策者提供决策辅助,提高科学决策水平 ...

  9. 20个Python 正则表达式应用与技巧

    本文分享自华为云社区<Python 正则表达式大揭秘应用与技巧全解析>,作者:柠檬味拥抱. Python 中的 re 模块是用于处理正则表达式的强大工具.正则表达式是一种用来匹配字符串的模 ...

  10. spring boot 手动value和自动注入配置的区别[五]

    前言 前面两篇中,写道我们注入配置的方式,是通过是注解的方式完成,如下: @ConfigurationProperties(prefix ="person") 这意味着: 我们写一 ...