2010-03-23 103 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.

祝你好運!