SQL Server对比两字段的相似度(函数算法)

您所在的位置:网站首页 模糊匹配函数相似 SQL Server对比两字段的相似度(函数算法)

SQL Server对比两字段的相似度(函数算法)

2024-07-11 12:51| 来源: 网络整理| 查看: 265

原文链接

 

相似度函数

概述

   比较两个字段的相似度

   最近有人问到关于两个字段求相似度的函数,所以就写了一篇关于相似度的函数,分别是“简单的模糊匹配”,“顺序匹配”,“一对一位置匹配”。在平时的这种函数可能会需要用到,可能业务需求不一样,这里只给出参照,实际情况可以相对修改。

本文所有的两个字段比较都是除以比较字段本身,例如A与B比较,找出的长度除以A的长度,因为考虑如果A的长度大于B的长度,相似度会超100%,例如‘abbc’,'ab'.

如果大家想除以B的长度,只需要在语句末尾将‘SET @num=@num*1.0/LEN(@Cloumna)’修改成‘SET @num=@num*1.0/LEN(@Cloumnb)’

步骤

   1.两个字段简单相似

 

---两个字段简单相似 CREATE FUNCTION DBO.FN_Resemble (@Cloumna NVARCHAR(MAX), @Cloumnb NVARCHAR(MAX) ) RETURNS FLOAT AS BEGIN DECLARE @num FLOAT,@len int SET @Cloumna=ISNULL(@Cloumna,0) SET @Cloumnb=ISNULL(@Cloumnb,0) SET @len=1 SET @num=0 WHILE(LEN(@Cloumna)0 AND LEN(@CloumnB)0) BEGIN WHILE(@len0) BEGIN SET @num=@num+1 END SET @len=@len+1 END SET @num=@num*1.0/LEN(@Cloumna) BREAK END RETURN @num END ----测试代码 SELECT DBO.FN_Resemble('ABDC321G','ABDC123G')

 

2.两个字段顺序相似

 

---两个字段顺序相似 CREATE FUNCTION DBO.FN_Resemble_order (@Cloumna NVARCHAR(MAX), @Cloumnb NVARCHAR(MAX) ) RETURNS FLOAT AS BEGIN DECLARE @num FLOAT,@len int SET @Cloumna=ISNULL(@Cloumna,0) SET @Cloumnb=ISNULL(@Cloumnb,0) SET @len=1 SET @num=0 WHILE(LEN(@Cloumna)0 AND LEN(@CloumnB)0) BEGIN DECLARE @a NVARCHAR(4) DECLARE @b NVARCHAR(4) IF(LEN(@Cloumna)>=LEN(@CloumnB)) BEGIN WHILE(@len=LEN(@CloumnB)) BEGIN WHILE(@len


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3