2015-02-05 87 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))