WHERE使用查询条件的两列
问题描述:
我的问题是更好地通过下面的例子来说明: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
答
通过试验和错误,我意识到语法
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))
但工程。 – 2015-02-05 16:44:38
不确定你的问题是什么,你想只是为了避免太多的代码行? – 2015-02-05 16:46:59
不,我不知道如何让用户输入“John Doe”,我用这个字符串在两个字段(NAME和SURNAME)中搜索。在这种情况下,NAME +''+ SURNAME ='JOHN DOE'。但我不知道如何在这种情况下说这个。我上面写的是可以的语法,但不起作用 – LaBracca 2015-02-05 16:49:42