【问题标题】:Is it possible to perform T-SQL fuzzy lookup without SSIS?是否可以在没有 SSIS 的情况下执行 T-SQL 模糊查找?
【发布时间】:2010-09-19 20:15:51
【问题描述】:

SSIS 2005/2008 进行模糊查找和分组。 T-SQL 中是否有相同的功能?

【问题讨论】:

    标签: sql-server tsql ssis fuzzy-search


    【解决方案1】:

    模糊查找使用 q-gram 方法,通过将字符串分解成微小的子字符串并对它们进行索引。然后,您可以通过将输入分解为相同大小的字符串来搜索输入。您可以检查其索引的格式并编写一个 CLR 函数来使用相同样式的索引,但您可能正在谈论相当多的工作。

    实际上他们是如何做到的非常有趣,非常简单但提供了非常强大的匹配并且非常可配置。

    我记得上次查看索引时,每个 q-gram 或子字符串都存储在表(索引)中的一行中。该行包含一个 nvarchar 列(以及其他值),用作二进制数据并包含对匹配行的引用。

    Microsoft Connect 上也有针对此功能的公开反馈建议。

    【讨论】:

      【解决方案2】:

      SQL Server 有一个 SOUNDEX() 函数:

      SELECT * 
      FROM Customers
      WHERE SOUNDEX(Lastname) = SOUNDEX('Stonehouse')
      AND SOUNDEX(Firstname) = SOUNDEX('Scott')
      

      【讨论】:

      • 是的 - 忘了这个。但不要认为它适用于数字标识符,比如转置数字或其他东西。
      • 我发现 soundex 过去非常原始,它可以工作,但它的粒度非常粗糙。 Double Metaphone 是一种较新版本的语音匹配,但仍有限制。
      【解决方案3】:

      全文搜索是一个很棒的模糊工具。 Brief primer here

      【讨论】:

        【解决方案4】:

        2009 年 3 月 5 日,我将在 www.sqlservercentral.com 上发布一篇文章,其中包含 Jaro-Winkler TSQL 示例

        【讨论】:

          猜你喜欢
          • 2015-06-23
          • 1970-01-01
          • 1970-01-01
          • 2010-12-23
          • 2011-07-07
          • 1970-01-01
          • 1970-01-01
          • 2011-07-24
          • 1970-01-01
          相关资源
          最近更新 更多