找到postgres行的最大差异

时间:2014-08-12 16:06:43

标签: sql database postgresql amazon-redshift

我有一个名为compression的表,它列出了每个项目的初始大小和压缩大小。

我想要一个查询,向我展示目前存储的最佳压缩,例如:

select max(
    cast(uncompressed_size as int) - 
    cast(compressed_size as int)
    )
from compression

问题是,由于此错误,此代码无法执行:

 ERROR: Invalid digit, Value '2', Pos 0, Type: Integer 
   Detail: 
  -----------------------------------------------
  error:  Invalid digit, Value '2', Pos 0, Type: Integer 
  code:      1207
  context:   
  query:     362794
  location:  :0
  process:   query0_21 [pid=0]
  -----------------------------------------------

铸造必须要进行,但我不确定是什么导致这种情况。

它是一个postgres数据库(技术上是amazon redshift),我真的很困惑为什么这样的操作可能会失败。

1 个答案:

答案 0 :(得分:1)

检查此字符字段值的结尾或开头是否有任何多余的空格并尝试修剪它。如果字符中有空格,则转换为整数将失败,因此您可能希望使用NULLIF(compressed_size,'')然后转换应该成功的空值。