试图了解oracle REGEXP_REPLACE如何工作

时间:2018-05-08 20:17:41

标签: oracle11g

需要新的帮助" REGEXP_REPLACE"。

当我这样做时

SELECT REGEXP_REPLACE('7ELEVEN USA','[(\D^USA|^CANADA|^Canada)]','') "NAME" from dual

我得到7ELEVE,你可以看到最后一个角色N缺失。

我想替换下面的第一个数字&展示7-ELEVEN STORE。

20991 7-ELEVEN STORE

非常感谢任何帮助。

提前感谢

1 个答案:

答案 0 :(得分:0)

  

我想替换下面的第一个数字&展示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>

<强> [编辑]

截至您发布的第一个查询(我不明白是问题):如果您想从该字符串中选择第一个“单词”,我就不会使用{{ 1}}但是(REGEXP_REPLACEREGEXP_

SUBSTR