извлечь слово за словом из строки - PullRequest
0 голосов
/ 17 марта 2020

У меня есть большой столбец примечаний, в котором есть слово NUMBER_OF_SERVERS_03, 03 может быть любыми 2 цифрами или может иметь n цифр, и после этого есть цифры, например, NUMBER_OF_SERVERS_03 2, я хочу извлечь цифры после этого, например, для

Notes Column - 'asdasd asdasda asdasd NUMBER_OF_SERVERS_03 24 hkashii rwnijt'
output will should be 24

Спасибо, Рейк sh

Ответы [ 2 ]

1 голос
/ 17 марта 2020

Вам необходимо использовать REGEXP_SUBSTR с параметрами соответствия следующим образом:

SQL> SELECT
  2      REGEXP_SUBSTR('asdasd asdasda asdasd NUMBER_OF_SERVERS_03 24 hkashii rwnijt',
  3      'NUMBER_OF_SERVERS_[0-9]+\s+([0-9]+)', 1, 1, NULL, 1) as RESULT
  4  FROM
  5      DUAL;

RE
--
24

-- Example with spaces and different server number
SQL> SELECT
  2      REGEXP_SUBSTR('asdasd asdasda asdasd NUMBER_OF_SERVERS_11   10 hkashii rwnijt',
  3      'NUMBER_OF_SERVERS_[0-9]+\s+([0-9]+)', 1, 1, NULL, 1) as RESULT
  4  FROM
  5      DUAL;

RE
--
10

SQL>

Приветствия !!

0 голосов
/ 17 марта 2020

Вы можете использовать regexp_replace():

select regexp_replace(notes, '^.*NUMBER_OF_SERVERS_[0-9]+[^0-9]*([0-9]+).*$', '\1')
from (select 'asdasd asdasda asdasd NUMBER_OF_SERVERS_03 24 hkashii rwnijt' as notes from dual)

Если вы знаете, что число следует за этой строкой с пробелом, то вы можете немного упростить это до:

select regexp_replace(notes, '^.*NUMBER_OF_SERVERS_[0-9]+ ([0-9]+).*$', '\1')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...