查询中的条件使用两列查询

时间:2015-02-05 16:41:58

标签: sql-server sql-server-2008-r2 where-clause

以下示例更好地解释了我的问题:

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'

的情况

感谢。

更新: 为了更好地表达自己我的意思是以下查询不返回任何结果,即使JOHN DOE在表中

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

select * 
from PEOPLE
WHERE
  NAME + SURNAME like @searchstring

1 个答案:

答案 0 :(得分:0)

通过反复试验,我意识到了语法

WHERE NAME + SURNAME like @SearchString

是正确的,工作正常。可能是某些情况下的开销,但它在正常(无大数据)情况下工作正常。

为了分享的乐趣,我在这里写了我在真实应用程序中使用的查询(一个返回用户只有一个编辑框要搜索的人员列表的Web应用程序:所以他可以搜索“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))