使用>比较列时出错

问题描述 投票:1回答:1
SELECT
     ci_inb_inv_id
    ,(item_seq_nbr*100)+94
    ,case when cor_val_txt > 0  then 'C'
          when cor_val_txt < 0  then 'A'
          else 'A'
      end
    ,item_seq_nbr
    ,cor_val_txt
    ,'DA'
    ,'O' 
    ,'O' 
    ,current_timestamp(0)
    ,user

这是我得到的错误

ERROR:  operator does not exist: character varying > integer
LINE 180: ,case when cor_val_txt > 0  then 'C'
sql postgresql
1个回答
0
投票

你无法将整数与字符串进行比较,PostgreSQL是严格的,不会为你做任何魔术类型转换。

所以我认为你需要使用::cor_val_txt翻译成INTEGER然后比较。

SELECT
     ci_inb_inv_id
    ,(item_seq_nbr*100)+94
    ,case when cor_val_txt::INTEGER > 0  then 'C'
          when cor_val_txt::INTEGER < 0  then 'A'
          else 'A'
      end
    ,item_seq_nbr
    ,cor_val_txt
    ,'DA'
    ,'O' 
    ,'O' 
    ,current_timestamp(0)
    ,user
© www.soinside.com 2019 - 2024. All rights reserved.