比如搜索多个列中是否包含某一字符,或数值。
一般的思路是用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)
和上面的结果是一样的。
等号逻辑判断,条件两边交换对结果没影响