从ORACLE DB中的名称字符串中提取姓氏

时间:2016-02-16 06:21:52

标签: sql database string oracle

我正在编写一个小查询来从一堆作者名称数据库中提取所有姓氏。文件名将包含名字和中间名,或仅包含名字。

前:约翰史密斯     约翰T.史密斯

所以我不能仅仅在第一个空格之后进行搜索...但我确定姓氏应该是从END到字符串右侧的第一个空格。我真的不在乎名字。

这就是我现在所拥有的......

select [name], LEFT([name], CHARINDEX(' ', [name] + ' ')-1) as firstName,
SUBSTRING([name], charindex(' ', [name]+' ') + 1, LEN([name])) as lastName
from Author 
;

我是sql的新手,非常感谢任何帮助! 提前致谢!

编辑:对于那些遇到过这种需求帮助的人来说,这一行有助于:

select substr(t.string,instr(t.string,' ',-1)+1) last_word  

2 个答案:

答案 0 :(得分:0)

对于Oracle DB,请尝试:

WITH t AS
  (SELECT name AS l FROM <your query>
  )
SELECT SUBSTR(l,instr(l,' ',-1)+1,LENGTH(l)) FROM t;

答案 1 :(得分:0)

SUBSTRING_INDEX()应该适用于这种情况。

select name, SUBSTRING_INDEX(name,' ',-1) as lastName from Author;