2011-05-22 43 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)) 

希望这会有所帮助。