{{1}}
它说我第一次出现问题时,有人可以帮忙吗?
答案 0 :(得分:0)
如果您想在IN
内使用CASE
,则需要使用不同的语法:
...
case
when item in ('A','B') then '1'
when item in ('C') then '2'
when item in ('D') then '3'
--else null -- no need , ELSE NULL is default behaviour of CASE
end ...
或更改CASE
以更正简单搜索语法:
CASE item
WHEN 'A' THEN '1'
WHEN 'B' THEN '1'
WHEN 'C' THEN '2'
WHEN 'D' THEN '3'
ELSE NULL
END
答案 1 :(得分:0)
CASE
是一个返回值的表达式。在您的情况下,它返回一个字符串值。
WHERE
子句由布尔表达式组成。字符串不是布尔表达式。我不确定你的意图,也许是:
(CASE WHEN item in ('A','B') then '1'
WHEN item in ('C') then '2'
WHEN item in ('D') then '3'
ELSE null
END) IS NOT NULL
(请注意CASE
和IS NOT NULL
添加的更改。)
然而,这是一个愚蠢的表达,因为它相当于:
item in ('A', 'B', 'C', 'D')
也许您想将CASE
添加到SELECT
,为其提供正确的列别名。