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

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

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

我想得到:

约翰 24

艾米丽

劳拉 50

代替:

约翰 24

艾米丽娜N

劳拉 50

【问题讨论】:

    标签: sql postgresql replace nan


    【解决方案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"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-15
        相关资源
        最近更新 更多