【问题标题】:To trim particular value in a column修剪列中的特定值
【发布时间】:2021-09-30 13:04:03
【问题描述】:

我有一个正则表达式选择语句,如下所示:

SELECT REGEXP_REPLACE(nvl(l.text_1, l.text),'^'||21810||'=|\|'
                                    ||21810||'=', '|'||21810||'='||'B1') 
                                    FROM table_1 1

这会检查文本的值,如果文本有 21810,则添加 B1

例如:如果我的文字是21614=C1||21810=C2

它的作用是:21614=C1|||||||21810=B1C2

但我想删除这个 C1 和 C2,它后面总是跟一个 '=' 并在 21810 中的 '=' 之后添加 B1

 21614=|||||||21810=B1

【问题讨论】:

    标签: regex select conditional-statements oracle12c regexp-replace


    【解决方案1】:

    使用两步替换:

    1. 删除= 之后和| 之前的值:
      [^=|]+(\||$) 替换为\1。见regex proof

    2. 接下来,添加B1:
      (^|\|)21810=\121810=B1。 见this regex proof

    【讨论】:

      猜你喜欢
      • 2018-11-23
      • 1970-01-01
      • 1970-01-01
      • 2021-09-14
      • 2022-01-11
      • 2020-05-17
      • 1970-01-01
      • 2015-02-07
      • 2018-09-25
      相关资源
      最近更新 更多