sql - Regexp_Replace Oracle 中具有相同替换次数的字符的多次出现

标签 sql regex oracle plsql

我需要一个正则表达式来将字符串中的 0 替换为 O,只有当它链接到一个单词时才为 0。 例如:

R0OSEVELT => ROOSEVELT
100 RO00SEVELT => 100 ROOOSEVELT
0RANGE10 => ORANGE10
PALT00OO = PLATOOOO

最佳答案

因为你已经用 sql 标记了问题,下面是我可以想出的代码。

REPLACE
   (search_string,
REGEXP_SUBSTR
   (search_string,
    '([[:alpha:]]+|^|[[:space:]])0+([[:alpha:]]+|$|[[:space:]])'
   ),
TRANSLATE
   (REGEXP_SUBSTR
       (search_string,
        '([[:alpha:]]+|^|[[:space:]])0+([[:alpha:]]+|$|[[:space:]])'
       ),
    '0',
    'O'
   )
   )

这是输出。它适用于您的输入案例。也许我错过了其他一些可能性。

R0OSEVELT --> ROOSEVELT
100 RO00SEVELT --> 100 ROOOSEVELT
0RANGE10 --> ORANGE10
PALT00OO --> PALTOOOO
RO00SEVELT 100 --> ROOOSEVELT 100
RANGE10 --> RANGE10
RANGE0 --> RANGEO

关于sql - Regexp_Replace Oracle 中具有相同替换次数的字符的多次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16179612/

相关文章:

MYSQL 从 SELECT 子查询更新所有行的数据

sql - 如何查找有多少客户从一张 table 上购买了不止一种东西

regex - 设计 NFA 时如何直观思考

sql - Oracle FETCH FIRST 1 ROW with UNION ALL 语句

SQL Insert 大数据集

java - Hibernate:奇怪的异常

sql - 如何在 Azure 数据工厂管道中使用 Try and Catch 命令?

regex - 需要从字符串中的模式创建数据框

javascript - 以某个字符串开头的单词的正则表达式 (javascript)

java - 如何在 java JDBC 中获取带有列名/标题的数据