使用两列查询中的 WHERE 条件

WHERE conditions in query using two columns

下面的例子可以更好地解释我的问题:

select * 
from PEOPLE
WHERE
  NAME like @SearchString OR
  SURNAME like @SearchString OR
  NAME + SURNAME like @SearchString OR
  SURNAME + NAME like @SearchString

基本上这是以下的确切语法:

NAME + SURNAME like @SearchString OR
SURNAME + NAME like @SearchString

? (我希望能够同时搜索2个字段)

想象一下 @SearchString = 'John Doe'

的情况

谢谢。

更新: 为了更好地表达自己,我的意思是以下查询 returns 没有结果,即使 JOHN DOE 在 table

declare @searchstring varchar(100)
set @searchstring = 'John%Doe'

select * 
from PEOPLE
WHERE
  NAME + SURNAME like @searchstring

通过反复试验我实现了语法

WHERE NAME + SURNAME like @SearchString

是正确的并且工作正常。在某些情况下可能是一种开销,但它在正常(无大数据)场景中工作正常。

为了分享的乐趣,我在这里写了我在我的真实应用程序中使用的查询(一个 Web 应用程序 returns 用户只有一个编辑框可以搜索的人员列表:所以他可以搜索 "John D", "Doe John", "John", "Doe", ...):

declare @searchstring varchar(100)
set @searchstring = 'John Doe'

SELECT *
FROM PEOPLE 
WHERE ( (SURNAME LIKE @SearchString) OR
       (NAME LIKE @SearchString) OR
       (NAME + ' ' + SURNAME LIKE @SearchString) OR
       (SURNAME + ' ' + NAME LIKE @SearchString))