我想写一个查询,当结果为空时返回一个特定的日期。当日期为空时返回另一个值? - DB2数据库
我尝试:
CASE WHEN TRIM(t1.COLUMN_NAME) is null THEN '9999-12-31'
我收到错误DB2 SQL错误:
SQLCODE=-199, SQLSTATE=42601, SQLERRMC=AS;END OVER CONCAT ||/- + AT * YEAR YEARS MONTH MONTHS DAY DAYS
这是为什么?
我想写一个查询,当结果为空时返回一个特定的日期。当日期为空时返回另一个值? - DB2数据库
我尝试:
CASE WHEN TRIM(t1.COLUMN_NAME) is null THEN '9999-12-31'
我收到错误DB2 SQL错误:
SQLCODE=-199, SQLSTATE=42601, SQLERRMC=AS;END OVER CONCAT ||/- + AT * YEAR YEARS MONTH MONTHS DAY DAYS
这是为什么?
你缺少关键字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中的有效日期。
在't1.COLUMN_NAME'为_not_ null的所有情况下,它将返回null;不确定那是否是目标。 – mustaccio
哦,是的,对。 –
如果您正在检查NULL
值,则不需要trim()
。因此,可以考虑这样的:
SELECT COALESCE(t1.COLUMN_NAME, '9999-12-31')
你的问题实际上是为什么你得到这个错误。那么,基本上它会列出一些可能出现在'9999-12-31'之间的令牌以及接下来的任何内容。其中之一是END
(尽管它可能缺少ELSE
)。
显示完整的语句。 – mustaccio