我在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