缺少表达式sql

时间:2015-08-06 22:08:33

标签: sql

{{1}}

它说我第一次出现问题时,有人可以帮忙吗?

2 个答案:

答案 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

(请注意CASEIS NOT NULL添加的更改。)

然而,这是一个愚蠢的表达,因为它相当于:

item in ('A', 'B', 'C', 'D')

也许您想将CASE添加到SELECT,为其提供正确的列别名。