2011-05-22 41 views
1

我想知道,如果它可以對兩個組合列搜索。例如,在我的應用程序中,我有一個「全名」輸入字段,但在SQL數據庫中,我有列名,姓。T-SQL搜索的「組合拳」列名

是否有可能建立一個查詢做這樣名+姓=%全名%的搜索?

回答

1

你可以這樣做:

select * 
from Production.Product 
where (Name + ' ' + ProductNumber) like 'Bearing Ball BA-8327' 

但是,如果你想利用索引的優勢,你先更好的分流您的輸入參數,然後使用直接場比較。

+0

很好,謝謝..會做! – Kelish 2011-05-22 20:56:58

1

是的,你可以做到這一點,但是這將是相當緩慢的。由於名字和姓氏可以被索引。

+0

所以基本上這樣的東西就足夠了? SELECT * FROM tbl_UserInfo WHERE info_Name + info_Surname LIKE '%名稱%姓%' – Kelish 2011-05-22 20:51:19

+0

是,(如果沒有info_Name也不info_Surname持有'NULL')。 – a1ex07 2011-05-22 20:57:04

0

如果磁盤空間不是問題,你可以用全名添加一個「老大難」計算列這樣就可以保持兩個特定列的細節,同時實現索引全稱列是自動更新的可能性時,無論是名字或姓氏的變化。

的限制條件是需要以及在稍慢的插入額外的空間。如果這兩種情況值得關注,則可以使用計算列而不使用持久性來獲得透明的全名列和更清晰的查詢。

http://msdn.microsoft.com/en-us/library/ms189292.aspx

0

擴大從以前的答案的建議,試試這個。

SELECT * FROM People 
WHERE firstname = substring(@fullname, 1, charindex(' ', @fullname) - 1) 
AND surname = substring(@fullname, charindex(' ', @fullname) + 1, len(@fullname)) 

希望這會有所幫助。