查询姓名

时间:2010-03-23 07:39:25

标签: c# sql sql-server-2005

我在SQL Server上有一张表(比如“人口统计数据”)。在此表中有以下列“LastName”,“FirstName”,“MiddleName”,“Prefix”,“Suffix”。

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

e.g。 “史密斯詹姆斯小” 。我们的客户有时以后缀存储Jr.有时只是将其添加到姓氏。有时史密斯詹姆斯可能就是姓氏。

2 个答案:

答案 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