我想寫一個查詢,當結果爲空時返回一個特定的日期。當日期爲空時返回另一個值? - 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