试图了解oracle REGEXP_REPLACE如何工作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了试图了解oracle REGEXP_REPLACE如何工作相关的知识,希望对你有一定的参考价值。
需要帮助成为“REGEXP_REPLACE”的新手。
当我做
SELECT REGEXP_REPLACE('7ELEVEN USA','[(D^USA|^CANADA|^Canada)]','') "NAME" from dual
我得到7ELEVE,你可以看到最后一个角色N缺失了。
我想从下面替换第一个数字并显示7-ELEVEN STORE。
20991 7-ELEVEN STORE
任何帮助是极大的赞赏。
提前感谢
答案
我想从下面替换第一个数字并显示7-ELEVEN STORE。
20991 7-ELEVEN STORE
好吧,你甚至不需要正则表达式 - 好的,旧的SUBSTR
+ INSTR
做得很好(那是RES2)。如果你想要regexp,那么这个模式:^d+
就可以了 - 它说:
^
锚到字符串的开头d+
取所有数字(直到第一个非数字字符,这是空格)
一个例子:
SQL> with test (col) as
2 (select '20991 7-ELEVEN STORE' from dual)
3 select
4 regexp_replace(col, '^d+') res1,
5 substr(col, instr(col, ' ') + 1) res2
6 from test;
RES1 RES2
--------------- --------------
7-ELEVEN STORE 7-ELEVEN STORE
SQL>
[编辑]
截至你发布的第一个查询(我不明白这是问题):如果你想从该字符串中选择第一个“单词”,我不会使用REGEXP_REPLACE
但是(REGEXP_
)SUBSTR
:
SQL> with test (col) as
2 (select '7ELEVEN USA' from dual)
3 select regexp_substr(col, 'w+') res1,
4 substr(col, 1, instr(col, ' ') - 1) res2
5 from test;
RES1 RES2
------- -------
7ELEVEN 7ELEVEN
SQL>
以上是关于试图了解oracle REGEXP_REPLACE如何工作的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Oracle 中使用 REGEXP_REPLACE 删除单词
Regexp_replace :从 Oracle 中的“+”分隔字符串中删除重复项 [重复]
oracle 的 regexp_replace 替换 https 不起作用