【问题标题】:Replace Function for specific values替换特定值的函数
【发布时间】:2020-06-17 11:36:53
【问题描述】:

我有一张这样的桌子:

  1. 文章
  2. 日期
  3. 状态
  4. 代码

“状态”列中的值是“00”、“01”、“OB” “代码”列中的值如下:

  • [05]+000569
  • [1B] 5555
  • 690KB
  • -859

我只对“状态”= '00' 的行感兴趣。 状态“00”只显示类似 [05]+000569 的值。 应使用以下函数修剪这些值:

select replace(regexp_substr(Code, '(^|[+])[0-9]+'), '+', '')

如何使用此函数为 "Status" = '00' 的行构建一个 SELECT SQL?

【问题讨论】:

    标签: sql oracle trim


    【解决方案1】:

    我明白了。你想要一个case 表达式:

    select (case when status = '00' then replace(regexp_substr(Code, '(^|[+])[0-9]+'), '+', '')
            end)
    

    【讨论】:

      【解决方案2】:

      status = '00' 的“修剪”,其他状态不要:

      SELECT CASE
                WHEN status = '00'                                              --> trim
                THEN                                                            --> for
                   REPLACE (REGEXP_SUBSTR (Code, '(^|[+])[0-9]+'), '+', '')     --> '00'
                ELSE
                   code                                                         --> else, do nothing
             END
                AS code
        FROM your_table
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-06-19
        • 1970-01-01
        • 1970-01-01
        • 2019-02-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多