1

我有一个字符串(带空格),我想从中分隔最后一个单词。例如:

"Steve Jobs" => Jobs
"Stack OverFlow Question" => Questions

PL/SQL 或 SQL 中是否有任何功能,以便我能够得到结果Jobs并将其Question分离出来?

4

2 回答 2

5

您可以使用INSTRSUBSTRINSTR告诉你一个特定角色的位置。为起始位置传递 -1 告诉 Oracle 开始从字符串的末尾向后看字符串的前面。

SQL> ed
Wrote file afiedt.buf

  1  with x as (
  2    select 'Steve Jobs' str from dual union all
  3    select 'Stack Overflow Question' from dual
  4  )
  5  select substr( str, instr( str, ' ', -1 ) + 1 ) last_word
  6*   from x
SQL> /

LAST_WORD
----------------------------------------------------------------------  
Jobs
Question
于 2011-12-08T18:40:06.113 回答
0

这是一种在 Microsoft SQL 中执行此操作的方法。概念应该与对 Oracle 语法的字符串函数更改相同。

declare @fldName varchar(30)
set @fldName = 'Steve Jobs'

select reverse(substring(reverse(@fldName),1,charindex(' ',reverse(@fldName))-1))

set @fldName = 'Stack Overflow Question'

select reverse(substring(reverse(@fldName),1,charindex(' ',reverse(@fldName))-1))
于 2011-12-08T18:39:52.197 回答