Oracle中的相似度计算函数:UTL_MATCH.EDIT_DISTANCE_SIMILARITY与UTL_MATCH.JARO_WINKLER_SIMILARITY比较分析

Oracle_SQL:数据查询过程中SQL技巧总结(持续更新中) 目录1: 如何计算两字段中字符串的相似程度?涉及函数(11gR2)UTL_MATCH函数简介Edit Distance 概念Jaro-Winkler 概念应用举例UTL_MATCH.EDIT_DISTANCE英文处理中文处理(支持不好)UTL_MATCH.EDIT_DISTANCE_SIMILARITY英文处理中文处理(支持不好)UTL_MATCH.JARO_WINKLER英文处理中文处理(支持不... 阅读详情
AI摘要

在数据处理与分析的文本相似度计算中,Oracle数据库的UTL_MATCH包提供EDIT_DISTANCE_SIMILARITY和JARO_WINKLER_SIMILARITY函数。前者基于编辑距离,适合拼写检查;后者基于Jaro - Winkler算法,适合短字符串比较。两者计算原理和性能有所不同。

在数据处理与分析中,尤其是在文本相似度计算方面,Oracle数据库提供了几个强大的工具函数。UTL_MATCH包中的两个函数——EDIT_DISTANCE_SIMILARITY和JARO_WINKLER_SIMILARITY,便是常用的文本相似度测量工具。

一、EDIT_DISTANCE_SIMILARITY函数

EDIT_DISTANCE_SIMILARITY函数用于计算两个字符串之间的编辑距离相似度。编辑距离是指将一个字符串转换为另一个字符串所需的最小操作数,操作包括插入、删除和替换字符。
函数UTL_MATCH.edit_distance_similarity返回一个介于0和100之间的相似度分数,表示两个字符串之间的相似程度,其中0表示完全不相似,100表示完全相似。

-- 0
SELECT UTL_MATCH.EDIT_DISTANCE_SIMILARITY('123456', '456789') AS similarity FROM dual;
-- 84
SELECT UTL_MATCH.EDIT_DISTANCE_SIMILARITY('123456', '123956') AS similarity FROM dual;
-- 67
SELECT UTL_MATCH.EDIT_DISTANCE_SIMILARITY('123456', '123654') AS similarity FROM dual;
-- 90
SELECT UTL_MATCH.EDIT_DISTANCE_SIMILARITY('1234567890', '1234567891') AS similarity FROM dual;
-- 100
SELECT UTL_MATCH.EDIT_DISTANCE_SIMILARITY('123456', '123456') AS similarity FROM dual;

上面相似度计算得到的值越接近100,说明它们的相似度越高。

二、JARO_WINKLER_SIMILARITY函数

JARO_WINKLER_SIMILARITY函数则基于Jaro-Winkler算法,该算法不仅考虑字符的相对顺序,还对字符串的前缀进行加权,以增加相似字符串的相似度。这使得该函数在处理相似的短字符串时,尤其是名字和地址等信息时,表现出色。Jaro-Winkler相似度的取值范围为0到100,数值越接近100表示字符串越相似。

-- 0
SELECT UTL_MATCH.JARO_WINKLER_SIMILARITY('123456', '456789') AS similarity FROM dual;
-- 92
SELECT UTL_MATCH.JARO_WINKLER_SIMILARITY('123456', '123956') AS similarity FROM dual;
-- 96
SELECT UTL_MATCH.JARO_WINKLER_SIMILARITY('123456', '123654') AS similarity FROM dual;
-- 96
SELECT UTL_MATCH.JARO_WINKLER_SIMILARITY('1234567890', '1234567891') AS similarity FROM dual;
-- 100
SELECT UTL_MATCH.JARO_WINKLER_SIMILARITY('123456', '123456') AS similarity FROM dual;

上面相似度计算得到的值越接近100,说明它们的相似度越高。其中有部分字符串比较结果和上面的EDIT_DISTANCE_SIMILARITY函数不同。

三、两者的比较

• 计算原理:

EDIT_DISTANCE_SIMILARITY依赖于编辑距离的概念,适用于需要考虑字符插入、删除和替换的场景。它适合于拼写检查、错别字纠正等任务。编辑距离(Levenshtein 距离)是将一个字符串转换为另一个字符串所需的最少编辑操作次数,这些操作包括插入、删除和替换字符。
JARO_WINKLER_SIMILARITY则更加关注字符串的相对顺序和前缀匹配,适合用于姓名、地址等短字符串的比较,能够更好地处理相似性。Jaro-Winkler 是基于匹配字符的相似度计算的算法,首先计算 Jaro 相似度,然后通过对公共前缀的加权来提高相似度值。

• 性能:

EDIT_DISTANCE_SIMILARITY在处理长字符串时,计算复杂度较高,可能会导致性能下降。
JARO_WINKLER_SIMILARITY相对而言在较短字符串的比较中效率更高,且计算量相对较小。

字符串相似度比较算法:Jaro–Winkler similarity的原理及实现 前言 在前面的文章中,笔者有对编辑距离以及Levenshtein距离进行详细的说明,其实levenshtein距离是编辑距离的其中一种定义,本文所说的Jaro距离是编辑距离的另外一种定义,它也是对两个字符串的相似度进行衡量,以得出两字符串的相似程度。下面我们一起来学习这个算法的原理以及实现吧。 标题算法定义 下面先说说Jaro distance(又称Jaro similarity),这是由Matt... 阅读详情

相关推荐

Oracle字符相似度函数

Oracle字符相似度函数。在sql语句中直接用该函数来计算2个字符串相似度。

oracle 字符相似度比较函数

查询两个字符串的相似度 [code="java"] select utl_match.edit_distance_similarity('aaaa','bbaa') from dual; [/code] 结果为:50 查询两个字符串的差异字符 [code="java"] select utl_match.edit_distance('aaaa','bbaa') from dual...

liujinzs的博客 1476

Windows Server+SqlServer Always On实战:5步搞定高可用集群搭建

本文详细介绍了在Windows Server环境中,通过5个关键步骤搭建SQL Server Always On高可用集群的实战指南。内容涵盖从底层故障转移集群配置、SQL Server实例启用Always On功能,到创建可用性组和侦听器的完整流程,并提供了核心运维与故障排查思路,帮助企业构建稳定可靠的数据库高可用架构。

milk5的博客 857

浅谈oracle数据库相似度比较函数UTL_MATCH.edit_distance_similarity

出现以上情况,这是因为:两个参数中字符长的长度作为分母,汉字为2个长度单位,匹配的长度为分子,结果四舍五入;匹配规则类似sql中的like'%a%','a%','%a'去匹配所有字符,例如UTL_MATCH.edit_distance_similarity('我1你','他1')=0/5=0,因为虽然都有1,但前者1在中间,相当于like %1%,而后者相当于like %1,二者不作相似。2.相似度的数值存在四舍五入的情况。有时候在使用相似度函数时,对比的两个对象完全不同,但相似度的数值不为0。

gongxj123的专栏 4625

Vivado Schematic视图实战:从RTL分析到布局布线,如何用它快速定位设计问题(附2019.1版操作)

本文深入解析Vivado Schematic视图在FPGA设计中的关键作用,从RTL分析到布局布线全流程,帮助工程师快速定位设计问题。通过三重视图对比、高效调试四步法和高级技巧,提升问题排查效率,缩短调试时间。文章结合2019.1版操作指南和实战案例,展示如何利用Schematic视图解决典型设计问题。

weixin_30591551的博客 488

ESP32开发环境避坑指南:用Thonny烧录MicroPython固件时常见的5个错误及解决方法

本文针对ESP32开发新手,详细解析了使用Thonny IDE烧录MicroPython固件时最常见的5个错误及其解决方案。内容涵盖驱动安装、端口识别、固件烧录失败、版本兼容性、连接不稳定以及文件系统操作异常等核心痛点,并提供硬件层面的深度排查指南,帮助开发者高效搭建稳定的ESP32开发环境。

weixin_29189003的博客 404

oracle中字符串相似度函数实测

oracle中比较两个字符串的相似度用函数:UTL_MATCH.edit_distance_similarity 比如:select UTL_MATCH.edit_distance_similarity('工商正阳', '中国工商银行股份有限公司正阳分行') FROM DUAL;

ryuqiu的专栏 3650

【Python学习日记:PySide6】【持续更新】

说明:PySide6 是 Qt for Python 的一部分,是一个 Python 绑定库,可以用来创建跨平台的 GUI 应用程序。它将 Qt 框架的丰富功能带到了 Python 环境中,允许开发者使用 Python 编写 GUI 应用程序。

XLQ的博客 8043

php mysql文本相似度_[原创]数据库字符串相似度思考

[原创]数据库字符串相似度思考最近项目上领导要求根据非规范的产品名去查找相同产品在其他供应商的价格这就需要用上字符串的相似度oracle这边貌似有现成的函数,但是函数理论未找到,不清楚实现原理,不过是支持中文的语法为UTL_MATCH.EDIT_DISTANCE_SIMILARITY ('A','B')sqlserver这边有很多人提供了算法,暂不考虑。整体来看,如果仅仅是判断字符串相似,这就仅仅...

weixin_29119475的博客 561

企业级 Agent 在 K8s 上的运行模型

Kubernetes├── Agent Orchestrator(控制面)├── Agent Runtime Pods(执行面)├── Graph DSL(流程层)├── Tool Services(能力层)K8s(调度)+ Graph(流程)+ Agent(决策)+ Tool(执行)+ Guard(治理)

一起修行,不孤单。这里有编程语言、开发工具、学习方法论和踩坑笔记。用简单的话说复杂的事,陪你从小白到进阶。周更干货,欢迎一起成长! 1171

智能园艺:AI Agent控制的室内种植系统

随着城市化进程的加速和人们对健康生活的追求,室内种植逐渐成为一种流行的生活方式。然而,传统的室内种植方式往往需要人工进行大量的监测和管理,效率低下且难以保证植物的生长质量。智能园艺:AI Agent控制的室内种植系统旨在利用先进的人工智能技术和传感器设备,实现室内种植的自动化和智能化管理,提高种植效率和植物生长质量。本系统的范围涵盖了从植物生长环境的监测到种植过程的自动化控制,包括温度、湿度、光照、土壤水分等环境参数的实时监测,以及灌溉、施肥、通风等种植操作的自动执行。

AI天才研究院 783

兼容oracle的edit_distance_similarity 比较两个字符串相似度

在进行应用适配过程中会遇到用户使用oracle的SYS.UTL_MATCH.edit_distance_similarity自带函数,进行比较两个字符串的相似度,但在替换为瀚高数据库后,会产生函数不存在的问题。

HighGO 1292

【推荐100个unity插件之27】推荐5种办法实现unity人物布料系统 衣服裙子飘动 头发飘动 胸部抖动 骨骼模拟 配件摆动 尾巴摆动 —— 主要是Magica Cloth 2插件

要实现Unity中的人物布料系统并使其具备动态效果,可以探索多种技术方法。这些方法不仅可以使衣服、裙子、头发等元素自然飘动,还可以实现胸部抖动、骨骼模拟、配件摆动和尾巴摆动等细致效果。本文将深入探讨五种实现这些动态效果的技术方案,从基础的物理模拟到高级的动画控制,帮助你打造逼真的人物表现。本文主要探究Magica Cloth 2的使用,因为我想探究最好的实现方法,而不是探究最多的实现方法。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 6296

Oracle计算编辑距离相似度问题

文本编辑距离

qq_34454820的博客 1476

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Oracle sql集

     1.SYS.UTL_MATCH.edit_distance_similarity(值1,值2);                                                       ---比较两个字段的相似度;       2.decode(逻辑表达式,是否=值1,值1,是否= 值n,值n, m);                                 ...

qq_39499221的博客 540

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

oracle 比较两个字符串相似度

SYS.UTL_MATCH.EDIT_DISTANCE_SIMILARITY函数用于计算两个字符串之间的编辑距离相似度

zlzdj的专栏 546

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

oracle比较两个字符串的相似度

oracle中比较两个字符串的相似度用函数:UTL_MATCH.edit_distance_similarity 比如:select UTL_MATCH.edit_distance_similarity('工商正阳', '中国工商银行股份有限公司正阳分行') FROM DUAL;

谢辉的专栏 1万+

写一个Oracle数据库使用MATCH_RECOGNIZE语法的例子

MATCH_RECOGNIZE是Oracle数据库的一种用于处理序列数据的语法。下面是一个使用MATCH_RECOGNIZE的例子: SELECT * FROM events MATCH_RECOGNIZE ( ORDER BY event_time MEASURES A.event_time AS start_time, B.event_time AS end_...

weixin_35755823的博客 732

字符串相似度算法

原文:http://blog.csdn.net/guffey/article/details/6750494 2011-09-05 17:30 74人阅读 评论(0) 收藏 举报 字符串相似度算法( Levenshtein Distance算法) 题目: 一个字符串可以通过增加一个字符,删除一个字符,替换一个字符得到另外一个字符串,假设,我们把从字符串A转换成字符串B,前面

chinesesword的专栏 5845

oracle地址相似度匹配

select * from (select entname,regno,lerepname,tel,DBMS_LOB.substr(dom) as dom, SYS.UTL_MATCH.edit_distance_similarity('海南省三亚市天涯区金鸡岭街113号第1层1-2号铺面',dom) 相似度 from sydj_entinfo t ) order by 相似度 desc ...

kai402458953的博客 2398

ORACLE判断两个字符串是否有相同字符

ORALCE实现将两个字符串/两列数据值进行对比,是否存在相同字符。

lalayaoyaobb的博客 1579

Oracle 两字符串相似度比较

select SYS.UTL_MATCH.edit_distance_similarity('为中华之举起而读书','为中华') from dual; 转载于:https://www.cnblogs.com/ckxlovejava/p/10144499.html

weixin_30410119的博客 1217

similarity函数mysql_【60】什么是人脸识别;One-Shot学习;Similarity函数

1. 人脸识别现在可以看到很多产品在运用人脸识别,如手机解锁、车站身份识别认证、刷脸支付等在人脸识别的相关文献中,人们经常提到人脸验证(face verification)人脸识别(face recognition)人脸验证问题:如果有一张输入图片,以及某人的ID或者是名字这个系统要做的是,验证输入图片是否是这个人有时候也被称作1对1问题只需要弄明白这个人是否和他声称的身份相符而人脸识别问题比人脸...

weixin_39820177的博客 292
上一篇: 深入理解 SQL 中的 WITH AS 语法
下一篇: Tomcat默认配置整理
ZWZhangYu
ZWZhangYu 优质创作者: Java技术领域 优质创作者: Java技术领域 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 2万+粉丝 497原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZWZhangYu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值