SQL连接搜索列

时间:2018-11-28 11:40:31

标签: sql sql-server tsql

我一直在寻找有关在几列上实现搜索功能的最佳方法的建议。

我有一台SQL服务器,其中包含用于以下内容的列:

title
firstname
middlenames
lastname
maidenname

如果用户搜索“ John Smith”,则需要在所有列中查找这些值。显然,这些列都不包含“ John”和“ Smith”的两个部分。我以前将各列加在一起,例如

select * from PEOPLE where (firstname + ' ' + middlenames +  ' ' + lastname) = %@SEARCHVALUE%

但是,这会阻止某些搜索返回值,因为通配符不符合搜索条件。

1 个答案:

答案 0 :(得分:0)

如果您的字段之一可以为空值,则也应CONCAT()进行设置。

SELECT * FROM PEOPLE WHERE CONCAT(firstname, ' ', middlenames, ' ', lastname) LIKE CONCAT('%',@SEARCHVALUE,'%')