sql中的字符串匹配

时间:2015-11-05 19:46:37

标签: sql regex

如果没有编写一些高级算法,我不确定这是否可行,但是在sql中有没有办法比较两个字符串,并获得相同数量的匹配字符的百分比?有人手动输入一串字符串,我需要让它们不那么独特。例如,如果我有" LOT&标志照明","标志照明"," ELECTRICIAN"我想循环一个单词列表(" SIGN"" PLUMBING"," ELECTRIC")并返回匹配的%,所以我可以替换原来的如果,比方说它超过85%相似。

1 个答案:

答案 0 :(得分:2)

SQL标准中没有包含您要求的内容。您可以使用存储过程编写内容,但各种SQL数据库已经包含模糊匹配函数,可以计算字符串之间的相似点和不同点。

The PostgreSQL fuzzystrmatch modulelevenshtein(),它会计算两个字符串之间的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