2015-02-05 89 views
-1

我的问题是更好地通过下面的例子来说明:WHERE使用查询条件的两列

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'

感谢。

更新: 更好地表达自己,我的意思是,下面的查询不返回任何结果,即使李四是表

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

select * 
from PEOPLE 
WHERE 
    NAME + SURNAME like @searchstring 
+0

但工程。 – 2015-02-05 16:44:38

+1

不确定你的问题是什么,你想只是为了避免太多的代码行? – 2015-02-05 16:46:59

+0

不,我不知道如何让用户输入“John Doe”,我用这个字符串在两个字段(NAME和SURNAME)中搜索。在这种情况下,NAME +''+ SURNAME ='JOHN DOE'。但我不知道如何在这种情况下说这个。我上面写的是可以的语法,但不起作用 – LaBracca 2015-02-05 16:49:42

回答

0

通过试验和错误,我意识到语法

WHERE NAME + SURNAME like @SearchString 

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

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