【问题标题】:How to replace only 0 values in Oracle?如何仅替换 Oracle 中的 0 值?
【发布时间】:2021-07-27 03:29:04
【问题描述】:

我有一个表,我想替换值为零的所有实例。但是,我正在运行的代码也会替换其中包含零的值,例如 403 和 4004。它将替换为 43 和 44。有没有办法只替换零值?

这是我的桌子:

id | value
1,    0
2,    0
3,    4004
4,    404

这是我希望输出的样子:

id | value
1,    -
2,    -
3,    4004
4,    404

这是我的代码:

select replace(value, '0', '-') as new_value from table1;

我的输出看起来像这样,这不是我想要的:

id | value
1,    -
2,    -
3,    4--4
4,    4-4

有什么提示或建议吗?

【问题讨论】:

    标签: sql oracle replace oracle10g


    【解决方案1】:

    更短的选项使用 Oracle DB 特有的 DECODE() 函数,例如

    SELECT DECODE(value,0,'-',value)
      FROM tab
    

    假设value 是数字列,则无需引用零。

    【讨论】:

    • 现在知道怎么添加了吗?
    • 我不明白你的意思。请查看demo@mali_the
    【解决方案2】:

    使用case 表达式:

    select t.*,
           (case when value = '0' then '-' else value end)
    from t;
    

    这假定value 是一个字符串。如果不是,则需要转换:

    select t.*,
           (case when value = '0' then '-' else cast(value as varchar2(255)) end)
    from t;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-13
      • 2020-01-27
      • 2016-11-09
      • 1970-01-01
      • 1970-01-01
      • 2023-01-19
      • 2018-12-13
      相关资源
      最近更新 更多