【问题标题】:how to copy values from a column to a non-existent column in postgresql如何将值从列复制到postgresql中不存在的列
【发布时间】:2021-06-16 07:10:30
【问题描述】:

我有一张这样的桌子:

我想将第一列中的值复制到不存在的“数量”列,如果它们具有不同的数据类型,我该怎么做?

我最初想要的是当第一列的值为 0 时,列 qty 应该为空白或空,而不是 [null],我通过我的代码实现了这一点:

SELECT round(od_qty),
CASE when round(od_qty) = 0 Then ''
END qty,
FROM vodetl 

现在我的问题是其他不为 0 的值怎么办,我如何将这些值复制到列 qty?我试过这个:

SELECT round(od_qty),
CASE when round(od_qty) = 0 Then ''
ELSE round(od_qty)
END qty,
FROM vodetl 

但由于它显示的是数字数据类型

ERROR:  invalid input syntax for type numeric: ""
LINE 2: CASE when od_item = 'C' and round(od_price,2) = 0.00 Then ''

如何在不改变第一列数据类型的情况下做到这一点??

【问题讨论】:

    标签: python sql database postgresql


    【解决方案1】:

    CASE 表达式的所有分支必须具有相同的类型。因此,如果要将空字符串显示为其中一个值,则另一个数值也应转换为文本。考虑:

    SELECT ROUND(od_qty),
           CASE WHEN ROUND(od_qty) = 0 THEN '' ELSE ROUND(od_qty)::text END qty,
    FROM vodetl;
    

    【讨论】:

      【解决方案2】:
      update vodetl set qty=CASE WHEN round = 0 THEN '' ELSE round::text END
      

      结果:

      【讨论】:

        猜你喜欢
        • 2021-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多