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



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

账户 ID 列可以包含字符串或具有空值

我试过:

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";

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

谢谢!

'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,

最新更新