使用两列查询中的 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))
下面的例子可以更好地解释我的问题:
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))