Regexp substr,在PL / SQL字符串末尾有起始位置

时间:2018-06-07 11:16:34

标签: 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))

但它仅适用于第一行,其中只有一个数字。我的想法是从头开始写作,因为名字总是在最后。所以我想写出名字,起始位置总是最后一个数字的最后一位数。

所以我想看到的是:

John Smith

Selena Amirez

Edvard Ramirez

提前谢谢。

2 个答案:

答案 0 :(得分:1)

这可能是一种方式:

Selena Amirez                                    
Edvard Ramirez                                   
John Smith 

给出:

{{1}}

这将得到字符串的非数字rigt部分($是字符串的结尾),它跟在数字部分和空格之后。

答案 1 :(得分:1)

另一种选择:

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>