Oracle和达梦:相似度函数:UTL_MATCH

这篇具有很好参考价值的文章主要介绍了Oracle和达梦:相似度函数:UTL_MATCH。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

返回:
Oracle和达梦:相似度函数:UTL_MATCH

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文章来源地址https://www.toymoban.com/news/detail-750190.html

到了这里,关于Oracle和达梦:相似度函数:UTL_MATCH的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [DM8] 达梦8配置兼容Oracle

    查询解释: DM Database Server 64 V8 1-1-190-21.03.12-136419-ENT 64 版本位数标识,64表示为64位版本,无64则表示为32位版本 V8 大版本号,目前主要是V7、V8 1-1-190 小版本号,表示8.1.1.190 ENT 版本标识, ENT表示企业版,还有STD标准版,SEC安全版,(其他标识为非通用的定制版) BLANK_PAD_MOD

    2024年01月19日
    浏览(48)
  • Flink-CDC——MySQL、SqlSqlServer、Oracle、达梦等数据库开启日志方法

    目录 1. 前言 2. 数据源安装与配置 2.1 MySQL 2.1.1 安装 2.1.2 CDC 配置 2.2 Postgresql 2.2.1 安装 2.2.2 CDC 配置 2.3 Oracle 2.3.1 安装 2.3.2 CDC 配置 2.4 SQLServer 2.4.1 安装 2.4.2 CDC 配置 2.5达梦 2.4.1安装 2.4.2CDC配置 3. 验证 3.1 Flink版本与CDC版本的对应关系 3.2 下载相关包 3.3 添加cdc jar 至lib目录 3.4 验

    2024年02月05日
    浏览(52)
  • Pytorch计算余弦相似度距离——torch.nn.CosineSimilarity函数中的dim参数使用方法

    前言 一、官方函数用法 二、实验验证 1.计算高维数组中各个像素位置的余弦距离 2.验证高维数组中任意一个像素位置的余弦距离 总结 现在要使用Pytorch中自带的 torch.nn. CosineSimilarity函数计算两个高维特征图(B,C,H,W)中各个像素位置的特征相似度,即特征图中的每个像素位置上

    2024年02月13日
    浏览(40)
  • Oracle行转列函数,列转行函数

    Oracle 可以通过 PIVOT , UNPIVOT ,分解一行里面的值为多个列,及来合并多个列为一行。 PIVOT 是用于将行数据转换为列数据的查询操作(类似 数据透视表 )。通过使用PIVOT,您可以按照特定的列值将数据进行汇总,并将其转换为新的列。 语法 pivot( 聚合函数 for 需要转为列的字段名

    2024年01月20日
    浏览(47)
  • 007.Oracle函数

    我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈 PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈 Oracle数据库教程:👉👉 Oracle数据库文章合

    2024年01月21日
    浏览(25)
  • oracle常用函数

    https://www.cnblogs.com/bellwether/p/10404956.html https://blog.csdn.net/qq_39443053/article/details/104044530 一 .创建存储过程语法 二.输出案例 三.调用存储过程 https://www.cnblogs.com/xzdblogs/p/6495755.html https://blog.csdn.net/Doris2016/article/details/118362336 https://blog.csdn.net/loveLifeLoveCoding/article/details/85156946 查询结

    2024年02月14日
    浏览(31)
  • 工作中,Oracle常用函数

    目录 1、序言 2、Oracle函数分类 3、数值型函数 3.1 求绝对值函数 3.2 求余函数 3.3 判断数值正负函数 3.4 三角函数 3.5 返回以指定数值为准整数的函数 3.6 指数、对数函数 3.7 四舍五入函数 4 字符型函数 4.1 ASSCII与字符转换函数 4.2 获取字符串长度 4.3 字符串截取函数 4.4 字符串连接

    2024年02月03日
    浏览(66)
  • oracle的管道函数

    1、管道函数即是可以返回行集合(可以使嵌套表nested table 或数组 varray)的函数,我们可以像查询物理表一样查询它或者将其赋值给集合变量。 2、管道函数为并行执行,在普通的函数中使用dbms_output输出的信息,需要在服务器执行完整个函数后一次性的返回给客户端。如果需

    2024年02月13日
    浏览(33)
  • ORACLE数据库 开窗函数

    开窗函数 2.1开窗函数的定义及语法 开窗函数(又名:分析函数,窗口函数,OLAP函数) 聚合函数:将数据按照一定的规则分组,统一分析各组的某项情况,每个分组返回一行结果 开窗函数:将数据按照一定的规则分组,统一分析各组的某项情况,每行数据返回一行结果 (

    2024年02月11日
    浏览(46)
  • 10.Oracle中decode函数

    【函数格式】:         decode (         expression,         condition_01, result_01,         condition_02, result_02,         ......,         condition_n, result_n,         result_default) 【函数说明】: 若表达式expression值与condition_01值匹配,则返回result_01,若不匹配,则继续判断; 若表达

    2024年02月10日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包