在 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;
Levenshtein 距离可能就是您正在寻找的。我之前用它来比较 SQL 服务器中字符串之间的相似性。
在 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;
Levenshtein 距离可能就是您正在寻找的。我之前用它来比较 SQL 服务器中字符串之间的相似性。