我需要在Oracle SQL (10gR2)中完成此任务,但我想,更好、更高效的算法也可以。
给定一行(或句子,包含一个或多个单词,英文),如何找到该句子的最后一个单词?
以下是我在SQL中尝试过的方法。但我希望看到更有效的方式来完成这个任务。
select reverse(substr(reverse(&p_word_in)
, 0
, instr(reverse(&p_word_in), ' ')
)
)
from dual;
这个想法是将字符串倒序,找到第一次出现的空格,检索子字符串并再次反转字符串。这种方法有效吗?是否有正则表达式可用?我使用的是Oracle 10g R2。但如果需要的话,我可以尝试使用其他编程语言,甚至编写PL/SQL函数。
更新:
Jeffery Kemp已经给出了很好的答案,它能完美地运行。
答案
SELECT SUBSTR(&sentence, INSTR(&sentence,' ',-1) + 1)
FROM dual