2016-01-04 60 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)。

相關問題