我在SQL Server上有一个表(称为“人口统计学”)。在此表中有以下列“LastName”,“FirstName”,“MiddleName”,“Prefix”,“Suffix”。查询名称
我有一个文本框在网页上搜索它们。我的问题: 什么是查询的好设计策略,用户可以搜索名称的各种组合,包括具有空格的姓氏
例如, “史密斯小詹姆斯” 。我们的客户有时以后缀存储Jr.,有时只是将它加上姓氏。有时史密斯詹姆斯可能是整个姓氏。
我在SQL Server上有一个表(称为“人口统计学”)。在此表中有以下列“LastName”,“FirstName”,“MiddleName”,“Prefix”,“Suffix”。查询名称
我有一个文本框在网页上搜索它们。我的问题: 什么是查询的好设计策略,用户可以搜索名称的各种组合,包括具有空格的姓氏
例如, “史密斯小詹姆斯” 。我们的客户有时以后缀存储Jr.,有时只是将它加上姓氏。有时史密斯詹姆斯可能是整个姓氏。
您可以先确定最合适的组合(名字+姓氏,中间名+姓氏,姓氏+后缀等)。然后,对于每个组合,你可以写一个返回
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.
祝你好运!
注意到你正在使用MS SQL 2005.
你看过SQL Server 2005 Full-Text Search?
有关搜索我rcommend好文章:Understanding Full Text Search in SQL Server 2005
什么SQL Server版本?全文搜索已安装? – TomTom 2010-03-23 07:40:55