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%'
4

3 に答える 3

1

他の方法もありますが、おそらくあなたの方法が最も効率的です。あなたはいつでも次のようなことをすることができます:

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

一部の列が の場合NULL、 を使用できますISNULL([field], '')

ただし、@MitchWheat が指摘したように、フィールドが で終了
d、次のフィールドが で始まる可能性があるため、まったく同じクエリではありませんan

于 2013-08-28T02:35:59.720 に答える
0

これについては 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
于 2013-08-28T02:47:25.860 に答える
0

どの値もNULLでない場合は、次のことができます。

SELECT *
FROM tblEmployees E
WHERE concat(E.CurrentAddress, ' ', E.email1, ' ', E.email2, ' ', E.LatinName) LIKE '%dan%';
于 2013-08-28T02:34:24.377 に答える