同じ基準を複数回書く代わりに、他の方法はありますか?
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
。
これについては plalx に同意しますが、「%dan%」を複数回入力するのが心配な場合は、変数を使用してください。
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
どの値もNULL
でない場合は、次のことができます。
SELECT *
FROM tblEmployees E
WHERE concat(E.CurrentAddress, ' ', E.email1, ' ', E.email2, ' ', E.LatinName) LIKE '%dan%';