【问题标题】:matching similar text in sql server在sql server中匹配相似的文本
【发布时间】:2013-11-28 10:21:16
【问题描述】:

我有不同最终用户手动输入的用户名。输入用户名时没有验证机制,因此可能存在拼写错误。例如用户可以 输入 Tina,Teena 以获取相同的用户名。当我输入 Tina 时,我需要返回 Tina,反之亦然。

精心设计

SELECT * FROM tbl where where username='tina'

应该返回 Tina、Teena 等

【问题讨论】:

    标签: sql sql-server pattern-matching


    【解决方案1】:

    您可以研究 T-SQL 中的 SOUNDEX 函数。例如,它将使 Teena 与 Tina 匹配(反之亦然)。

    http://technet.microsoft.com/en-us/library/ms187384.aspx

    正如函数名所暗示的,它匹配发音相同的单词。因此,尽管它会将 Tina 与 Teena 匹配,但不会将 Tina 与 Sina 匹配(因为它们“听起来”不一样)。

    【讨论】:

      【解决方案2】:

      您可以参考 soundex 或 diffrence

      Select Soundex('Teena'),Soundex('Tina')
      

      soundex 为两者返回 T500,所以它们是相似的词

      Select Difference('Teena','Tina')
      

      返回4,越差越相似

      【讨论】:

        【解决方案3】:
        SELECT name 
        FROM   (SELECT 'tina' AS name 
                UNION ALL 
                SELECT 'teena' AS name 
                UNION ALL 
                SELECT 'tena' AS name)tmp 
        WHERE  Soundex(name) LIKE '%' + Soundex('tina') + '%' 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多