除了多次编写相同的标准,还有其他方法吗?
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
。
如果没有任何值是NULL
,您可以执行以下操作:
SELECT *
FROM tblEmployees E
WHERE concat(E.CurrentAddress, ' ', E.email1, ' ', E.email2, ' ', E.LatinName) LIKE '%dan%';
同意 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