我正在编写一个查询来提取一些数据,并遇到这种无效的双精度输入语法:"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,