我只需要在两列中搜索特定的字符串值,所以我通常的方法是
SELECT ... FROM ...
WHERE (col1 = 'xyz' OR col2 = 'xyz')
但是,如果我不得不检查多个值(只是为了快速检查),请对“ abc”,“ www”,“ lol”等都说一次,那真是很痛苦。
因此,我尝试了此方法,并成功了!我不知道是否支持这种语法。
SELECT ... FROM ...
WHERE 'xyz' IN (col1, col2)
可以使用这种方式吗?我的意思是有什么警告吗?
答案 0 :(得分:3)
在两种情况下,引擎都会执行完全相同的操作。您可以在谓词上看到它:
DECLARE @Table TABLE (
FirstValue INT,
SecondValue INT)
INSERT INTO @Table (
FirstValue,
SecondValue)
VALUES
(1, 10),
(2, 20)
SELECT
*
FROM
@Table AS T
WHERE
1 IN (T.FirstValue, T.SecondValue)
SELECT
*
FROM
@Table AS T
WHERE
T.FirstValue = 1 OR T.SecondValue = 1