2016-01-04 48 views
0

我想写一个查询,当结果为空时返回一个特定的日期。当日期为空时返回另一个值? - 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

这是为什么?

+0

显示完整的语句。 – mustaccio

回答

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中的有效日期。

+1

在't1.COLUMN_NAME'为_not_ null的所有情况下,它将返回null;不确定那是否是目标。 – mustaccio

+0

哦,是的,对。 –

3

如果您正在检查NULL值,则不需要trim()。因此,可以考虑这样的:

SELECT COALESCE(t1.COLUMN_NAME, '9999-12-31') 

你的问题实际上是为什么你得到这个错误。那么,基本上它会列出一些可能出现在'9999-12-31'之间的令牌以及接下来的任何内容。其中之一是END(尽管它可能缺少ELSE)。

相关问题