代码之家  ›  专栏  ›  技术社区  ›  Martin Bobak

SQL Server中是否有一个与Python的SequenceMatcher等效的方法来连接相似的列?

  •  2
  • Martin Bobak  · 技术社区  · 6 年前

    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 回复  |  直到 6 年前
        1
  •  2
  •   Lukasz Szozda    6 年前

    你可以用 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

        2
  •  0
  •   Jassem Abdal    6 年前

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