Plsql 起始位置位于字符串PL/SQL末尾的Regexp substr

Plsql 起始位置位于字符串PL/SQL末尾的Regexp substr,plsql,substr,regexp-replace,regexp-substr,Plsql,Substr,Regexp Replace,Regexp Substr,我有这样的字符串: 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)) 但它只适用于第一行,其中只有一个数字。我的想法是从结尾开始写,因为名字总是在结尾。所以我想写下名字,起始位置总是最后一个数字的最后一位 所以我想看到的是:

我有这样的字符串:

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
提前谢谢。

这可能是一种方式:

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 
这将获取字符串的非数字rigt部分($是字符串的结尾),该部分位于数字部分和空格之后。

这可能是一种方法:

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 
这将获取字符串的非数字rigt部分($是字符串的结尾),该部分位于数字部分和空格之后。

另一个选项:

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>
另一种选择:

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>

非常感谢你!我需要这个:)非常感谢!我需要这个:)