我想知道是否可以搜索两个组合列。例如,在我的应用程序中,我有一个“全名”输入字段,但在SQL数据库中我有列名称,姓氏。
是否可以构建查询来执行名称+姓氏=%全名%等搜索?
答案 0 :(得分:1)
是的,你可以做到这一点,但它会很慢。由于姓名和姓氏可以编入索引。
答案 1 :(得分:1)
你可以这样做:
select *
from Production.Product
where (Name + ' ' + ProductNumber) like 'Bearing Ball BA-8327'
但是,如果您想利用索引编制,最好先将输入参数拆分,然后再使用直接字段比较。
答案 2 :(得分:0)
如果磁盘空间不是问题,您可以添加一个带有全名的“持久”计算列,这样您就可以维护两个特定列的细节,同时可以索引首先自动更新的全名列。或姓氏更改。
需要注意的是额外的空间以及稍慢的插入物。如果担心这两种情况,您可以使用计算列而不使用持久性来获取透明的fullname列和更清晰的查询。
答案 3 :(得分:0)
扩展以前答案的建议,试试这个。
SELECT * FROM People
WHERE firstname = substring(@fullname, 1, charindex(' ', @fullname) - 1)
AND surname = substring(@fullname, charindex(' ', @fullname) + 1, len(@fullname))
希望这有帮助。