在select子句中使用case?

时间:2012-04-26 09:33:07

标签: sql db2

我想使用CASE语句有条件地检查参数if parameter is an empty string I want to return Nil if not then string 'test',但这不起作用。我也不想使用COALESCE

select TEST=CASE '' WHEN '' THEN 'Nil' ELSE 'Test' END,current_timestamp from sysibm.sysdummy1;

我收到错误

  

SQL状态:42601   供应商代码:-104   消息:[SQL0104]令牌=无效。有效代币:+ - AS。原因。 。 。 。 。 :在token =处检测到语法错误。令牌=不是有效令牌。有效令牌的部分列表是+ - AS。此列表假定语句在令牌之前是正确的。该错误可能在语句中较早,但语句的语法在此之前似乎是有效的。恢复。 。 。 :执行以下一项或多项操作并再次尝试请求: - 验证token =区域中的SQL语句。纠正声明。错误可能是缺少逗号或引号,可能是拼写错误的单词,也可能与子句的顺序有关。 - 如果错误标记是,则更正SQL语句,因为它不以有效子句结束。

2 个答案:

答案 0 :(得分:1)

select CASE '' WHEN '' THEN 'Nil' ELSE 'Test' END as TEST,current_timestamp from sysibm.sysdummy1;

用预期的列替换某些


有关详情,请查看THIS

答案 1 :(得分:0)

您的案例语法不正确,正确的是

select TEST=CASE <fieldname> WHEN '' THEN 'Nil' ELSE 'Test' END,current_timestamp from sysibm.sysdummy1;