Regexp substr с начальной позицией в конце строки PL / SQL - PullRequest
0 голосов
/ 07 июня 2018

У меня есть такие строки:

WORK 123 John Smith

10.01.D 5132 3330 Selena Amirez

300 TK30 000 Edvard Ramirez

Я хочу написать только имена в конце.У меня был такой код:

regexp_substr(string, '([0-9])( +)(.*)', 1, 1, 'i', 3))

Но он работает только для первой строки, в которой есть только один номер.Моя идея - начать писать с конца, потому что имена всегда в конце.Поэтому я хочу выписать имена, и начальная позиция всегда будет последней цифрой последнего числа.

Итак, что я хочу видеть:

John Smith

Selena Amirez

Edvard Ramirez

Спасибовперед.

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Другой вариант:

SQL> with test (col) as
  2    (select 'WORK 123 John Smith'             from dual union
  3     select '10.01.D 5132 3330 Selena Amirez' from dual union
  4     select '300 TK30 000 Edvard Ramirez'     from dual
  5    )
  6  select col, trim(regexp_substr(col, '(\D)+$')) result
  7  from test;

COL                             RESULT
------------------------------- -------------------------------
10.01.D 5132 3330 Selena Amirez Selena Amirez
300 TK30 000 Edvard Ramirez     Edvard Ramirez
WORK 123 John Smith             John Smith

SQL>
0 голосов
/ 07 июня 2018

Это может быть способ:

select regexp_substr(str, '([0-9]+ )([^0-9]*$)', 1, 1, 'i', 2)
from (
    select 'WORK 123 John Smith' str from dual union
    select '10.01.D 5132 3330 Selena Amirez' from dual union
    select '300 TK30 000 Edvard Ramirez' from dual
)

, который дает:

Selena Amirez                                    
Edvard Ramirez                                   
John Smith 

Получает нечисловую правильную часть строки ($ - конец строки)которая следует за числовой частью и пробелом.

...