在SQL Server中是否有等效于pythons的SequenceMatcher联接相似的列?

时间:2018-12-14 19:34:26

标签: sql sql-server sequencematcher

在python中,有一个不错的内置函数,可让我检查两个字符串的序列之间的差异。下面的示例:

from difflib import SequenceMatcher

def similar(a, b):
    return SequenceMatcher(None, a, b).ratio()

示例:

similar("Apple","Appel")
0.8
similar("Apple","Mango")
0.0

SQL中是否有等效功能?

我需要做的是在一个列上联接两个表。在表A上,此列是他们的实际帐户号,在另一张表上,该列是用户添加他们的帐户号,这不是必填字段,因此,我注意到他们的实际帐户号略有不同。

表A

account_num   Name
5WWW55        John
DDDDD7        Jacob
SSSSX7        jingleheimer

表B

account_num   Name
5WWW55        John
3SSSX7        jingleheimer     -- First character is different 


Select Table_A.account_num, 
       Table_b.Name 
FROM Table_A
JOIN TABLE_B 
          on Table_A.account_num = Table_B.account_num

预期输出:

account_num   Name
5WWW55        John
SSSSX7        jingleheimer

2 个答案:

答案 0 :(得分:2)

您可以使用DIFFERENCE

SELECT Table_A.account_num, 
       Table_b.Name 
FROM Table_A
JOIN TABLE_B 
  ON DIFFERENCE(Table_A.account_num , Table_B.account_num) = 4;

db<>fiddle

答案 1 :(得分:0)

Levenshtein距离可能是您想要的。我以前曾用它来比较SQL Server中字符串之间的相似性。