2010-03-23 104 views
1

我在SQL Server上有一个表(称为“人口统计学”)。在此表中有以下列“LastName”,“FirstName”,“MiddleName”,“Prefix”,“Suffix”。查询名称

我有一个文本框在网页上搜索它们。我的问题: 什么是查询的好设计策略,用户可以搜索名称的各种组合,包括具有空格的姓氏

例如, “史密斯小詹姆斯” 。我们的客户有时以后缀存储Jr.,有时只是将它加上姓氏。有时史密斯詹姆斯可能是整个姓氏。

+1

什么SQL Server版本?全文搜索已安装? – TomTom 2010-03-23 07:40:55

回答

1

您可以先确定最合适的组合(名字+姓氏,中间名+姓氏,姓氏+后缀等)。然后,对于每个组合,你可以写一个返回

SELECT 50 AS score, tableId 
FROM SearchTable 
WHERE '%' + FirstName + ' ' + LastName + '%' LIKE @searchphrase 

UNION 

SELECT 40 AS score, tableId 
FROM SearchTable 
WHERE '%' + MiddleName + ' ' + LastName + '%' LIKE @searchphrase 

ORDER BY score DESC 

对于每个语句SELECT语句,你可以操纵在更精细的级别分数(例如+5,如果它是在名字全场比赛)。

要过滤掉空格和其他非搜索的人物,我建议你创建一个user-defined function.

祝你好运!