T-SQL搜索'组合'列名

时间:2011-05-22 20:45:53

标签: sql-server tsql

我想知道是否可以搜索两个组合列。例如,在我的应用程序中,我有一个“全名”输入字段,但在SQL数据库中我有列名称,姓氏。

是否可以构建查询来执行名称+姓氏=%全名%等搜索?

4 个答案:

答案 0 :(得分:1)

是的,你可以做到这一点,但它会很慢。由于姓名和姓氏可以编入索引。

答案 1 :(得分:1)

你可以这样做:

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

但是,如果您想利用索引编制,最好先将输入参数拆分,然后再使用直接字段比较。

答案 2 :(得分:0)

如果磁盘空间不是问题,您可以添加一个带有全名的“持久”计算列,这样您就可以维护两个特定列的细节,同时可以索引首先自动更新的全名列。或姓氏更改。

需要注意的是额外的空间以及稍慢的插入物。如果担心这两种情况,您可以使用计算列而不使用持久性来获取透明的fullname列和更清晰的查询。

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

答案 3 :(得分:0)

扩展以前答案的建议,试试这个。

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

希望这有帮助。