SQL怎么模糊匹配比对两个字段的相似度

小野马1209 2020-03-12 02:33:45
问题描述:
用户在新建项目名称时,由于存在不同人在新建项目名称,导致重复创建项目(名称类似),想查出每个项目相似度最高的项目编码,
请教下要用什么样的逻辑查找。
SQL版本:2008R2

--需求:按ProjectName【项目名称】模糊匹配,查找出项目名称匹配度最高的一个项目编码
DECLARE @T1 TABLE (ID VARCHAR(50),ProjectName VARCHAR(100))
insert into @T1
SELECT 'prj01','广州人民医院' union ALL
SELECT 'prj02','广州市人民医院' union ALL
SELECT 'prj03','中国医院'


想要的结果: 匹配度最高项目 文字匹配程度
ID ProjectName
prj01 广州人民医院 Prj02 100%
prj02 广州市人民医院 prjo1 85%
prj03 中国医院
prjo1 33%
...全文
3361 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
morliz子轩 2020-03-14
  • 打赏
  • 举报
回复
要匹配相似度最高,就要先考虑做一个关键字的索引字典。 用字典去匹配,会事半功半。
吉普赛的歌 版主 2020-03-14
  • 打赏
  • 举报
回复
这种东西不是数据库的强项,最好是结合程序来完成。 当然了,要比你想象要复杂一点。 你先搜索一下 elasticsearch, 先做分词, 分好词再来比较就容易了。
二月十六 版主 2020-03-14
  • 打赏
  • 举报
回复
引用 5 楼 kaijie_wu1209 的回复:
[quote=引用 4 楼 二月十六 的回复:] "院医民广州人"这样6个字就全匹配上了,但实际效果并不好
大神点建议,实际业务他们建的名称有的就是很相接近,不管排序这种匹配率高可以减少一部分失误[/quote] 额,我也没有这个经验,不太好建议
小野马1209 2020-03-13
  • 打赏
  • 举报
回复
引用 4 楼 二月十六 的回复:
"院医民广州人"这样6个字就全匹配上了,但实际效果并不好

大神点建议,实际业务他们建的名称有的就是很相接近,不管排序这种匹配率高可以减少一部分失误
二月十六 版主 2020-03-13
  • 打赏
  • 举报
回复
"院医民广州人"这样6个字就全匹配上了,但实际效果并不好
小野马1209 2020-03-13
  • 打赏
  • 举报
回复
引用 2 楼 二月十六 的回复:
这个主要就是逻辑规则吧,实现应该不难。
是一个字一个字的比对,顺序不用管,还是什么样的一个规则,还是得讨论这个

名称的顺序不管,我的想法是比如A项目的名称名称是6个字,将匹配文字相同最多的一个项目名称找出来
二月十六 版主 2020-03-13
  • 打赏
  • 举报
回复
这个主要就是逻辑规则吧,实现应该不难。 是一个字一个字的比对,顺序不用管,还是什么样的一个规则,还是得讨论这个
小野马1209 2020-03-13
  • 打赏
  • 举报
回复
顶一下~~~

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧