首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图理解oracle REGEXP_REPLACE是如何工作的

试图理解oracle REGEXP_REPLACE是如何工作的
EN

Stack Overflow用户
提问于 2018-05-08 20:17:40
回答 1查看 36关注 0票数 0

需要帮助成为"REGEXP_REPLACE“的新手。

当我这么做

代码语言:javascript
复制
SELECT REGEXP_REPLACE('7ELEVEN USA','[(\D^USA|^CANADA|^Canada)]','') "NAME" from dual

我得到7 7ELEVE和你可以看到,最后一个字符N是失踪。

我想替换下面的第一个号码&显示7-11商店。

代码语言:javascript
复制
20991 7-ELEVEN STORE

任何帮助都是非常感谢的。

预先感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-08 20:24:15

我想替换下面的第一个号码&显示7-11商店。 20991 7-11商店

那么,您甚至不需要正则表达式--好的、老的SUBSTR + INSTR可以很好地完成工作(这就是RES2)。如果您想要regexp,那么这个模式:^\d+执行它-它说:

  • ^锚定到字符串的开头
  • \d+把所有的数字都取下来(直到第一个非数字字符,也就是空格)。

举个例子:

代码语言:javascript
复制
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

代码语言:javascript
复制
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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50241666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档