我在SQL Server上有一张表(比如“人口统计数据”)。在此表中有以下列“LastName”,“FirstName”,“MiddleName”,“Prefix”,“Suffix”。
我有一个文本框可以在网页上搜索它们。我的问题: 什么是用户可以搜索各种名称组合的查询的好设计策略,包括具有空格的姓氏
e.g。 “史密斯詹姆斯小” 。我们的客户有时以后缀存储Jr.有时只是将其添加到姓氏。有时史密斯詹姆斯可能就是姓氏。
答案 0 :(得分:1)
您可以首先确定可能的组合优先级(名字+姓氏,中间名+姓氏,姓氏+后缀等)。然后,对于每个组合,您可以编写一个返回
的SELECT语句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
对于每个声明,您可以在更精细的级别操作乐谱(例如+5,如果它与LastName完全匹配)。
要过滤掉空格和其他不可搜索的字符,建议您创建user-defined function.
祝你好运!答案 1 :(得分:0)
注意到您正在使用MS SQL 2005.
你看过SQL Server 2005 Full-Text Search吗?
关于搜索的好文章我推荐:Understanding Full Text Search in SQL Server 2005