我正在编写一个查询来提取一些数据,并遇到了这个无效的输入语法,类型为double precision:"null“错误,并且不完全确定它背后的含义和/或还没有想出解决方案。我正在运行case语句的列确实有null值,或者它有我需要的相应值。
帐户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,
两者都会导致无效操作:类型double precision的输入语法无效:"null";
当我只是将其放入一列并使用长度(Account_id)时,它将显示长度或仅显示null -为什么这在case语句中不起作用?
谢谢!
发布于 2018-06-01 05:52:55
'null'
是一个字符串。null
才是。。。好吧,null
。您的account_id
似乎属于double precision
类型。对于account_id
来说,这是一个奇怪的选择,但是不适当的数据类型并不重要。与此相关的是,case
表达式希望所有内容都是相同类型的,其中数字优先。
你可能想要这两件事中的一件:
(case when length(account_id) > 1 then account_id end) as account_id,
如果没有else
,则默认为null
。您可以添加else null
,但这是多余的。
或者:
(case when length(account_id) > 1 then account_id::varchar(255) else 'null' end) as account_id,
https://stackoverflow.com/questions/50633292
复制相似问题