从表中选择听起来相似的单词

时间:2014-10-08 12:52:48

标签: tsql fuzzy-search

我读了一篇关于英语和语音的有趣文章 - 并希望看看我的新知识是否可以应用于TSQL以生成模糊结果集。在我的一个应用程序中,有一个包含单词的表,我从单词列表中提取。它实际上是一个单列表 -

Word |
------
A
An
Apple
...
their
there

SQL Server中是否有内置函数来选择声音这样的单词相同,即使它拼写不同? (全球化设置在en-ZA上 - 我上次检查时)

SELECT Word FROM WordTable WHERE Word = <word that sounds similar>

1 个答案:

答案 0 :(得分:2)

SoundEx()

  

SOUNDEX将字母数字字符串转换为四字符代码,该代码基于发言时字符串的声音。

Difference()

  

返回一个整数值,指示两个字符表达式的SOUNDEX值之间的差异。

SELECT word
     , SoundEx(word) As word
     , SoundEx(word_that_sounds_similar) As word_that_sounds_similar
     , Difference(SoundEx(word), SoundEx(word_that_sounds_similar)) As how_similar
FROM   wordtable
WHERE  Difference(SoundEx(word), SoundEx(word_that_sounds_similar)) <= 1 /* quite close! */

Difference()返回的值表示两个单词的相似程度。

0 表示强匹配,值 4 表示从轻微到无匹配。