首页 > 解决方案 > 修剪列中的特定值

问题描述

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

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

标签: regexselectconditional-statementsoracle12cregexp-replace

解决方案


使用两步替换:

  1. 删除=之前和之后的值|
    替换[^=|]+(\||$)\1。请参阅正则表达式证明

  2. 接下来,添加B1:
    (^|\|)21810=\121810=B1. 请参阅此正则表达式证明


推荐阅读