我正在尝试编写一个查询,当结果为null时返回特定日期。
我的尝试:
CASE WHEN TRIM(t1.COLUMN_NAME) is null THEN '9999-12-31'
我收到错误DB2 SQL Error:
SQLCODE = -199,SQLSTATE = 42601,SQLERRMC = AS;结束CONCAT || / - + AT *每年每月一个月
为什么会这样?
答案 0 :(得分:3)
如果您要检查trim()
值,则不需要NULL
。所以,考虑一下:
SELECT COALESCE(t1.COLUMN_NAME, '9999-12-31')
您的问题实际上是为什么您收到了该错误。好吧,基本上它列出了一些可能出现在' 9999-12-31'之间的令牌。以及接下来的一切。其中一个是END
(虽然它可能缺少ELSE
)。
答案 1 :(得分:2)
您缺少关键字end
这样:
CASE WHEN TRIM(t1.COLUMN_NAME) is null THEN '9999-12-31'
应该是这样的:
CASE WHEN TRIM(t1.COLUMN_NAME) is null THEN '9999-12-31' else t1.column_name end
另外,您不需要修剪功能。 trim(null)
是null
。另外,这假设您的字段是char或varchar。如果是日期,则无法使用trim
。另外,请确保您的默认值是db2中的有效日期。