пытаясь понять, как работает оракул REGEXP_REPLACE - PullRequest
0 голосов
/ 08 мая 2018

Нужна помощь, чтобы быть новичком в "REGEXP_REPLACE".

Когда я делаю

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

Я получаю 7ELEVE, и вы можете видеть, что отсутствует последний символ N.

Я хочу заменить первые цифры снизу и отобразить 7-ОДИН УНИВЕРМАГ.

20991 7-ELEVEN STORE

Любая помощь очень ценится.

Заранее благодарен

1 Ответ

0 голосов
/ 08 мая 2018

Я хочу заменить первые цифры снизу и отобразить 7-ОДИН УНИВЕРМАГ.

20991 7-ОДИННАДЦАТЫЙ МАГАЗИН

Ну, вам даже не нужны регулярные выражения для этого - старый добрый SUBSTR + INSTR отлично справляется со своей работой (это RES2). Если вы хотите регулярное выражение, то этот шаблон: ^\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>

[EDIT]

По состоянию на первый отправленный вами запрос (я не понял, что это был вопрос ): если вы хотите выбрать первое «слово» из этой строки, я бы не использовал 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...