在查询中返回 Null,而不是 NaN

Posted

技术标签:

【中文标题】在查询中返回 Null,而不是 NaN【英文标题】:Return Null in a query, instead of NaN 【发布时间】:2015-04-25 21:43:03 【问题描述】:

在 PostgreSQL 中,我希望查询返回 Null 或空值,而不是 NaN(此 NaN 是由 python 的 pandas 插入以填充空值)。

示例: 选择姓名、年龄 来自“人”

我想得到:

约翰 24

艾米丽

劳拉 50

代替:

约翰 24

艾米丽娜N

劳拉 50

【问题讨论】:

【参考方案1】:

我认为你需要使用:

SELECT name, coalesce(age, '') as age From "People"

Coalesce 将空值(第一个参数)替换为第二个参数(此处为空字符串)。

如果你需要测试比 NULL 更复杂的情况,你也可以使用 CASE/WHEN :

SELECT name, CASE WHEN age IS NULL THEN '' ELSE age END AS age from "People"

但 COALESCE 对于简单的 null 处理具有更好的可读性。

【讨论】:

很抱歉,但我认为这并不能回答我的问题。我想用 Null 替换 NaN。顺便说一句,我认为调整你的第二个表达方式是可行的。但西莫的答案更简单。【参考方案2】:

尝试使用REPLACE

Select name, REPLACE(age, 'NaN')
From People

如果年龄字段包含值'NaN',它将用空字符串替换它。

【讨论】:

【参考方案3】:

如果您想要空值而不是“NaN”,您可以简单地使用:

SELECT name, NULLIF(age, 'NaN') From "People"

【讨论】:

以上是关于在查询中返回 Null,而不是 NaN的主要内容,如果未能解决你的问题,请参考以下文章

空时Linq查询不返回null

Django如何获取0而不是null

聚合函数(MAX 等)返回 NULL 而不是没有行

当表 laravel 5.8 中没有数据时,null 返回总和而不是 0

hive中用not in查询正确数据,返回值为空

ExtractValue mysql XML 返回空而不是 NULL