使用>比较列时出错

时间:2018-07-10 05:40:42

标签: sql postgresql

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'

1 个答案:

答案 0 :(得分: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