如果没有编写一些高级算法,我不确定这是否可行,但是在sql中有没有办法比较两个字符串,并获得相同数量的匹配字符的百分比?有人手动输入一串字符串,我需要让它们不那么独特。例如,如果我有" LOT&标志照明","标志照明"," ELECTRICIAN"我想循环一个单词列表(" SIGN"" PLUMBING"," ELECTRIC")并返回匹配的%,所以我可以替换原来的如果,比方说它超过85%相似。
答案 0 :(得分:2)
SQL标准中没有包含您要求的内容。您可以使用存储过程编写内容,但各种SQL数据库已经包含模糊匹配函数,可以计算字符串之间的相似点和不同点。
The PostgreSQL fuzzystrmatch module有levenshtein()
,它会计算两个字符串之间的Levenshtein distance,基本上是为获得相同的字符串而需要进行的单个字符编辑的数量。
"LOT & SIGN LIGHTING", "SIGN LIGHTING", "ELECTRICIAN"
SIGN 15 9 9
PLUMBING 15 9 9
ELECTRIC 17 9 3
正如您所看到的,它在识别长字符串和短字符串之间的关系方面并不十分有用。您可以加权插入,删除和替换字符的成本,以使这项工作更好。例如,如果不匹配的成本增加到2 ......
"LOT & SIGN LIGHTING", "SIGN LIGHTING", "ELECTRICIAN"
SIGN 15 9 11
PLUMBING 19 13 13
ELECTRIC 21 15 3