比如搜索多个列中是否包含某一字符,或数值。
一般的思路是用or连接多个条件,比如:
;WITH cte(ID,value1,value2,value3,value4) AS (
SELECT 1,100,200,300,400 UNION ALL
SELECT 2,90,100,200,300 UNION ALL
SELECT 3,80,90,100,200 UNION ALL
SELECT 4,70,80,90,100 UNION ALL
SELECT 5,60,70,80,90
)
SELECT * FROM cte AS t
WHERE t.value1 =100 OR t.value2 =100 OR t.value3 =100 OR t.value4 =100返回四条结果。上面的条件可以改成:
;WITH cte(ID,value1,value2,value3,value4) AS (
SELECT 1,100,200,300,400 UNION ALL
SELECT 2,90,100,200,300 UNION ALL
SELECT 3,80,90,100,200 UNION ALL
SELECT 4,70,80,90,100 UNION ALL
SELECT 5,60,70,80,90
)
SELECT * FROM cte AS t
WHERE 100 IN (t.value1,t.value2,t.value3,t.value4)和上面的结果是一样的。
等号逻辑判断,条件两边交换对结果没影响

本文介绍了一种在SQL查询中使用IN操作符代替多个OR条件的方法,这种方法可以使查询更加简洁,并展示了如何在具体示例中应用这一技巧。
10万+

被折叠的 条评论
为什么被折叠?



