在 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 之后使用&lt;t1&gt; TO &lt;t2&gt;

您可能仍会在 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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

informix怎么导入数据sql文件

Informix SQL 11.5 按列将一个选择的结果附加到另一个选择

Informix SQL - 简单选择查询返回意外结果

informix上如何执行*.sql脚本

怎么样mysql的数据同步到informix

IBM Informix SQL 中的 LIKE