PSQL - 双精度类型的输入语法无效:" null&#34 ;;

时间:2018-05-31 21:50:21

标签: sql postgresql

我正在编写一个查询来提取一些数据并运行这种无效的输入语法以获得类型双精度:" null"错误,并不完全确定它背后的意义和/或避免找出解决方案。运行案例陈述的列I确实在其中具有空值,或者它具有我需要的适当值。

帐户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&#34 ;;

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

谢谢!

1 个答案:

答案 0 :(得分:3)

'null'是一个字符串。 null是。 。 。好null。您的account_id似乎是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,