我正在编写一个小查询来从一堆作者名称数据库中提取所有姓氏。文件名将包含名字和中间名,或仅包含名字。
前:约翰史密斯 约翰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
答案 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;