如何在多列中选择具有相同条件的行?

时间:2013-08-28 02:31:39

标签: sql

是否会有其他方式而不是多次写出相同的标准?

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

3 个答案:

答案 0 :(得分:1)

还有其他方法,但你的方法可能已经效率最高了。你总是可以这样做:

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

如果某些列为NULL,则可以使用ISNULL([field], '')

但是,正如@MitchWheat指出的那样,它不是完全相同的查询,因为字段可以结束 按d,下一个字段可以an开头。

答案 1 :(得分:0)

如果这些值都不是NULL,您可以执行以下操作:

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

答案 2 :(得分: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