2013-08-28 144 views
0

是否有其他方法而不是多次編寫相同的標準?如何在多列中選擇具有相同條件的行?

SELECT * FROM tblEmployees E 
WHERE E.CurrentAddress LIKE '%dan%' OR 
E.Email1 LIKE '%dan%' OR 
E.Email2 LIKE '%dan%' OR 
E.LatinName LIKE '%dan%' 
+0

對不起,我的英語不是很好。 我的意思是,有沒有簡化'%丹%'的方法? –

回答

1

還有其他的方法,但你可能是最有效的了。你總是可以這樣做:

SELECT * 
FROM tblEmployees 
WHERE CurrentAddress + Email1 + Email2 + LatinName LIKE '%dan%' 

如果某些列的是NULL,你可以使用ISNULL([field], '')

然而,正如@MitchWheat指出,這是不完全一樣的查詢,因爲一個字段可以結束
d和下一場可以通過an啓動。

+0

謝謝。如果我想使用tblEmployees中的所有列,該怎麼辦? –

+0

@BongDaleap好吧,如果你不願意硬編碼所有的列,你總是可以通過獲取列名建立一個動態的SQL語句http://stackoverflow.com/questions/600446/sql-server-how-do -you-return-the-column-names-from-a-table – plalx

+1

這不是同一個查詢:CurrentAddress以'd'結尾,email1以'an'開頭 –

0

如果沒有值是NULL,你可以這樣做:

SELECT * 
FROM tblEmployees E 
WHERE concat(E.CurrentAddress, ' ', E.email1, ' ', E.email2, ' ', E.LatinName) LIKE '%dan%'; 
0

同意在這一個plalx,但如果你擔心鍵入「%丹%」多次,使用一個變量:

BEGIN 
    DECLARE @p_search NVARCHAR(50) 
    SET @p_search = '%dan%' 

    SELECT * 
    FROM tblEmployees E 
    WHERE E.CurrentAddress LIKE @p_search 
     OR E.Email1 LIKE @p_search 
     OR E.Email2 LIKE @p_search 
     OR E.LatinName LIKE @p_search 
END 
GO 
相關問題