在 Informix SQL 中选择 null [重复]
Posted
技术标签:
【中文标题】在 Informix SQL 中选择 null [重复]【英文标题】:Selecting null in Informix SQL [duplicate] 【发布时间】:2013-08-02 02:56:42 【问题描述】:我有以下问题。
select case when <some condition> then max(modify_date) else NULL::DATETIME end from <table>
我想在 else 情况下返回 null,但这会引发语法错误。如何解决?我也试过CAST(NULL AS DATETIME)
。
【问题讨论】:
【参考方案1】:您需要指定 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 表达式中遇到“聚合与非聚合”的问题。你可能会更好:
SELECT MAX(CASE
WHEN <some condition>
THEN modify_date
ELSE NULL::DATETIME YEAR TO DAY
END)
FROM <table>
或者可能有另一种方法来处理它。这取决于您期望的输出。聚合为整个表输出一行; null 是“每行一行”(这就是我认为会有麻烦的原因)。您没有指定 GROUP BY 子句。
【讨论】:
【参考方案2】:你试过了吗:
select (case when <some condition> then max(modify_date) end)
from <table>;
没有else
子句会自动返回NULL
。
【讨论】:
以上是关于在 Informix SQL 中选择 null [重复]的主要内容,如果未能解决你的问题,请参考以下文章