Oracle REGEXP_SUBSTR извлекает строки по пробелу при наличии нескольких пробелов.

Привет, я новичок в Oracle SQL, я хочу извлечь LiIon Polymer из 6Cell LiIon Polymer.

Я использую REGEXP_SUBSTR('6Cell LiIon Polymer', '\S+', 7), но он возвращает только LiIon


person Osca    schedule 10.08.2020    source источник
comment
Чего вы действительно хотите? Что-нибудь после первого слова? Последние 2 слова? Что-нибудь после первого слова с числом в нем? Что-нибудь после первого пробела? Что, если описание первого слова состояло из 6 ячеек с пробелом внутри?   -  person Gary_W    schedule 10.08.2020


Ответы (2)


Вам нужна подстрока, следующая за первым пробелом? Используйте комбинацию старое-доброе substr + instr. Сначала пример данных, запрос, который может вас заинтересовать, начинается со строки № 4.

SQL> with test (col) as
  2    (select '6Cell LiIon Polymer' from dual)
  3  --
  4  select substr(col, instr(col, ' ') + 1) result
  5  from test;

RESULT
-------------
LiIon Polymer

SQL>
person Littlefoot    schedule 10.08.2020

Использование регулярного выражения и без жесткого кодирования

select REGEXP_SUBSTR('6Cell LiIon Polymer', '[^\S]+', instr('6Cell LiIon Polymer', ' '), 1) from dual;
person Atif    schedule 10.08.2020
comment
Выбирается первое место. Я полагаю, вы хотите REGEXP_SUBSTR('6Cell LiIon Polymer', '.*? (.*)$', 1, 1, NULL, 1) - person Gary_W; 12.08.2020
comment
Ах да, я пропустил это, это должно быть select REGEXP_SUBSTR('6Cell LiIon Polymer', '[^\S]+', instr('6Cell LiIon Polymer', ' ') + 1, 1) из двойного; - person Atif; 12.08.2020