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

如果没有任何值是NULL,您可以执行以下操作:

SELECT *
FROM tblEmployees E
WHERE concat(E.CurrentAddress, ' ', E.email1, ' ', E.email2, ' ', E.LatinName) LIKE '%dan%';
于 2013-08-28T02:34:24.377 回答
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 回答