基于预定义列表的SQL最近匹配

时间:2011-11-01 10:14:21

标签: sql search text

我有一张客户表,其中有1,000条记录。作为Web应用程序的一部分,我希望能够为用户提供一个文本框,用于在应用程序中输入客户名称,然后显示一些详细信息。

显然,这取决于两件事:1)客户名称在数据库记录中正确输入; 2)用户在搜索框中正确输入客户名称。

我想做的是让用户输入一些文本,系统然后返回必要的数据,如果匹配或(更重要的是),显示最近的匹配列表(即从客户列表)供用户选择是否没有完全匹配。

那么,使用MS SQL 2005,有一种简单的方法来做后者吗?

肖恩。

2 个答案:

答案 0 :(得分:1)

有一个匹配算法Soundex您可以轻松应用它来获取匹配的字符串,请参阅this

SELECT
  FirstName,
  SOUNDEX(FirstName) AS SoundTest,
  DIFFERENCE(FirstName, 'textentered') As DiffTest
FROM
  customerTable

仅当列是一个单词并且有另一个名为Levenshtein Distance的匹配算法时才应用此选项我认为你应该看一下

答案 1 :(得分:0)

最简单的方法可能是

first look for the exact match
if found display
else query database again using LIKE operator 
(select name
 from table
 where name like '%nameEnteredByUser%')
display user, all the possible combinations

虽然根据您的要求可能会有更复杂的方法