如何 select PL\SQL 中字符串的最后 3 个单词?

How to select the last 3 words from a string in PL\SQL?

我有一列数据如下:

教授 Eigen Foster 犯罪学家

学生娜塔莉波特曼记者

Victor Morgan 牙医

瑞士 M. Muriel Bayes 博士新闻学家

我想看的是:

Eigen Foster Criminalist

娜塔莉波特曼记者

Victor Morgan 牙医

穆里尔·贝叶斯新闻学家

我知道我应该用 regexp_substr 来做,但我不知道如何使用 $ 作为起始位置。所以一个字符串中可能有不同数量的单词,但我总是需要最后 3 个单词。

试试这个正则表达式 [^ ]+ [^ ]+ [^ ]+$

SELECT  regexp_substr('Professor Dr. Eigen Foster Criminalist', '[^ ]+ [^ ]+ [^ ]+$')FROM dual;
  • $ - 表示字符串结束
  • [^ ]+ - 表示至少一个字符但没有空格