这段代码在WHERE子句中:
AND
C = CASE
WHEN @Variable = 'NA' THEN C
ELSE LIKE '%' + @Variable + '%'
END
这就是我想要的:如果@Variable是'NA'(如不适用),那么给我所有结果。如果没有,我只想要像@Variable那样的C.
错误就是这样。如果我从C = CASE中删除=,则LIKE没有更多错误,但错误是CASE。我该怎么办?
答案 0 :(得分:2)
这可以在一个简单的WHERE
中完成,如下所示:
SELECT * FROM MyTable
WHERE (@Variable = 'OK') OR (C LIKE '%' + @Variable + '%')
答案 1 :(得分:1)
这种语法永远不会奏效,为什么要这么复杂?
WHERE (@var = 'ok') OR (c like '%' + @var + '%')
答案 2 :(得分:0)
最终你想要的是OR
。我建议使用其他答案给出的方法,但确实可以使用CASE
修复语法问题。
AND
'Keep' = CASE
WHEN @Variable = 'NA' THEN 'Keep'
WHEN C LIKE '%' + @Variable + '%' THEN 'Keep'
ELSE 'Discard'
END
我还试图强调,所比较的值并不重要,ELSE
是绝对必要的。