在 'IN' 子句中使用列名时有什么注意事项吗?

Are there any caveats when using column names in 'IN' clause?

我只是需要在 2 列中搜索特定的字符串值,所以我通常的做法是

SELECT ... FROM ...
WHERE (col1 = 'xyz' OR col2 = 'xyz')

但是如果我必须检查多个值(只是为了快速检查),说一次 'abc',然后 'www',然后 'lol',依此类推,它是痛。

所以,我尝试了这个并且成功了!我从来不知道支持这种语法。

SELECT ... FROM ...
WHERE 'xyz' IN (col1, col2)

这样用可以吗?我的意思是有什么注意事项吗?

引擎在两种情况下执行完全相同的操作。在Predicate:

上可以看得很清楚
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