是否有其他方法而不是多次編寫相同的標準?如何在多列中選擇具有相同條件的行?
SELECT * FROM tblEmployees E
WHERE E.CurrentAddress LIKE '%dan%' OR
E.Email1 LIKE '%dan%' OR
E.Email2 LIKE '%dan%' OR
E.LatinName LIKE '%dan%'
是否有其他方法而不是多次編寫相同的標準?如何在多列中選擇具有相同條件的行?
SELECT * FROM tblEmployees E
WHERE E.CurrentAddress LIKE '%dan%' OR
E.Email1 LIKE '%dan%' OR
E.Email2 LIKE '%dan%' OR
E.LatinName LIKE '%dan%'
還有其他的方法,但你可能是最有效的了。你總是可以這樣做:
SELECT *
FROM tblEmployees
WHERE CurrentAddress + Email1 + Email2 + LatinName LIKE '%dan%'
如果某些列的是NULL
,你可以使用ISNULL([field], '')
。
然而,正如@MitchWheat指出,這是不完全一樣的查詢,因爲一個字段可以結束
由d
和下一場可以通過an
啓動。
謝謝。如果我想使用tblEmployees中的所有列,該怎麼辦? –
@BongDaleap好吧,如果你不願意硬編碼所有的列,你總是可以通過獲取列名建立一個動態的SQL語句http://stackoverflow.com/questions/600446/sql-server-how-do -you-return-the-column-names-from-a-table – plalx
這不是同一個查詢:CurrentAddress以'd'結尾,email1以'an'開頭 –
如果沒有值是NULL
,你可以這樣做:
SELECT *
FROM tblEmployees E
WHERE concat(E.CurrentAddress, ' ', E.email1, ' ', E.email2, ' ', E.LatinName) LIKE '%dan%';
同意在這一個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
對不起,我的英語不是很好。 我的意思是,有沒有簡化'%丹%'的方法? –