在 SQL Server 中是否有与 pythons 的 SequenceMatcher 等效的东西来加入相似的列?

Is there an equivalent to pythons's SequenceMatcher in SQL Server to join on columns that are similar?

在 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中是否有等效的功能?

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

Table一个

account_num   Name
5WWW55        John
DDDDD7        Jacob
SSSSX7        jingleheimer

Table 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

您可以使用 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

Levenshtein 距离可能就是您正在寻找的。我之前用它来比较 SQL 服务器中字符串之间的相似性。