如何从oracle plsql的字符串中获得第二个多于一个字母的最后一个单词



我想从plsql中包含多个字母的字符串中获取最后第二个单词。

例如:-

如果字符串是'John Smith A',我需要得到'Smith'作为输出

如果字符串是'John Smith and ',我需要得到'An'作为输出

我试过以下方法;它的正则表达式在正则表达式测试器中工作,但当涉及到oracle PLSQL时,它没有给出任何输出。

SELECT regexp_substr('John Smith A', '([a-zA-Z]{2,}[^a-zA-Z]*)(?!.*[a-zA-Z]{2,}[^a-zA-Z])') FROM dual

可以使用

SELECT regexp_substr('John Smith A', '([[:alpha:]]+)(s+[[:alpha:]])?$', 1, 1, NULL, 1)

参见regex演示。

模式匹配:

  • ([[:alpha:]]+)-第1组:一个或多个字母
  • (s+[[:alpha:]])?-一个可选的序列
    • s+-一个或多个空白
    • [[:alpha:]]-单个字母
  • $-字符串
  • 结束

最新更新