首页 > 解决方案 > PSQL - 双精度类型的无效输入语法:“null”;

问题描述

我正在编写一个查询来提取一些数据并遇到这种类型双精度的无效输入语法:“null”错误,我不完全确定它背后的含义和/或没有找到解决方案。我正在运行案例语句的列中确实包含空值,或者它具有我需要的适当值。

帐户 id col 可以有字符串或者它有空值

我试过了:

case
    when length(account_id) > 1
      then account_id
    else
      'null'
    end as account_id,

case
    when account_id is not null
      then account_id
    else
      'null'
    end as account_id,

两者都导致无效操作:双精度类型的无效输入语法:“null”;

当我把它放在一个列中并使用长度(account_id)时,它会显示长度或只显示 null - 为什么这在 case 语句中不起作用?

谢谢!

标签: sqlpostgresql

解决方案


'null'是一个字符串。 null是 。. . 好吧null。你的account_id似乎是 type double precision。这是一个奇怪的选择account_id,但不合适的数据类型是不相关的。相关的是该case表达式希望所有内容都属于同一类型,并且数字优先。

您可能需要以下两件事之一:

(case when length(account_id) > 1 then account_id end) as account_id,

默认null是没有else. 您可以添加else null,但这是多余的。

或者:

(case when length(account_id) > 1 then account_id::varchar(255) else 'null' end) as account_id,

推荐阅读