【问题标题】:List field with only one element casting problem只有一个元素转换问题的列表字段
【发布时间】:2022-12-03 18:00:21
【问题描述】:

我在 postgresql 表中有一列是列表只有一个元素,并且此元素始终为整数或空值。

我正在尝试在这样的查询中使用此字段:

select
sum(case when value = 1  then 1 else 0 end) as count_of1
sum(case when value = 2  then 1 else 0 end) as count_of2
from tbl

并返回:operator does not exist: text=integer 但如上所述,由于某些未知原因,我无法将其转换为数字。

我正在尝试投射这个领域,但总是出错。试过:

value::numeric,  
value::float, 
value::integer  

而且我总是遇到铸造错误。

pg_typeof(value) ->>  'text'

【问题讨论】:

  • 转换值时出现的错误是什么?
  • 始终是整数或 null" 显然不是,如果你不能将它转换为整数。

标签: postgresql


【解决方案1】:

为什么不将它与文本值进行比较呢`

sum(case when value = '1' then 1 else 0 end) 

或者:

count(*) filter (where value = '1')

但是value::integer应该可以工作全部如果至少有一行具有无法转换的值,则该列中的值可以转换为整数,这将失败。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-15
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2022-07-10
    • 2012-05-22
    • 1970-01-01
    • 2019-05-09
    相关资源
    最近更新 更多