我有以下查詢。在Informix中選擇NULL
select case when <some condition> then max(modify_date) else NULL::DATETIME end from <table>
我想在else情況下返回null,但是這會引發語法錯誤。如何解決這個問題?我也試過CAST(NULL AS DATETIME)
。
我有以下查詢。在Informix中選擇NULL
select case when <some condition> then max(modify_date) else NULL::DATETIME end from <table>
我想在else情況下返回null,但是這會引發語法錯誤。如何解決這個問題?我也試過CAST(NULL AS DATETIME)
。
您需要指定哪個DATETIME類型。假設modify_date
是DATETIME YEAR TO DAY,那麼你需要寫:
SELECT CASE
WHEN <some condition>
THEN MAX(modify_date)
ELSE NULL::DATETIME YEAR TO DAY -- or CAST(NULL AS DATETIME YEAR TO DAY)
END
FROM <table>
如果modify_date
實際上是DATETIME YEAR TO SECOND或類似的東西,修改相應的演員。但是,您需要在DATETIME
之後<t1> TO <t2>
。
您可能仍然遇到CASE表達式中'aggregate vs non-aggregate'的問題。你可能會更好:
SELECT MAX(CASE
WHEN <some condition>
THEN modify_date
ELSE NULL::DATETIME YEAR TO DAY
END)
FROM <table>
或者有可能是另一種方式來處理它。這取決於你期望的輸出。聚合爲整個表輸出一行; null是'每行'(這就是爲什麼我認爲會有麻煩)。您不指定GROUP BY子句。
你試過:
select (case when <some condition> then max(modify_date) end)
from <table>;
不具有else
條款自動返回NULL
。