Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从ORACLE DB中的名称字符串中提取姓氏_Sql_Database_String_Oracle - Fatal编程技术网

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

Sql 从ORACLE DB中的名称字符串中提取姓氏,sql,database,string,oracle,Sql,Database,String,Oracle,我正在编写一个小查询,从一组作者姓名数据库中提取所有姓氏。文件中的名称将包含名字和中间名,或者仅包含名字 约翰·史密斯 约翰·T·史密斯 所以我不能仅仅在第一个空间之后搜索。。。但我可以肯定的是,lastname应该是从字符串右侧的末尾到第一个空格。我真的不在乎名字 这就是我现在拥有的 select [name], LEFT([name], CHARINDEX(' ', [name] + ' ')-1) as firstName, SUBSTRING([name], charindex(' ',

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

约翰·史密斯 约翰·T·史密斯

所以我不能仅仅在第一个空间之后搜索。。。但我可以肯定的是,lastname应该是从字符串右侧的末尾到第一个空格。我真的不在乎名字

这就是我现在拥有的

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  

对于Oracle DB,请尝试以下操作:

WITH t AS
  (SELECT name AS l FROM <your query>
  )
SELECT SUBSTR(l,instr(l,' ',-1)+1,LENGTH(l)) FROM t;
在这种情况下应该有效

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

你确定你不必处理像戴高乐、马丁·范布伦、克里斯汀·斯科特·托马斯、海伦娜·邦汉·卡特、安东尼奥·加西亚·帕斯夸尔、马可·德内格罗、文森特·梵高、皮耶罗·德拉·弗朗西斯卡这样的复合姓氏吗?如果是这样的话,姓氏仍然是最后一个字。请注意,如果不手动查看数据,仅从姓氏中提取最后一个“字”将导致一系列问题。这与查尔斯·戴高乐的姓氏是戴高乐有关:不是戴高乐。太棒了!我想对于我正在处理的数据库,我不需要处理姓氏。谢谢!但当我用左键时。。。部分,它抛出了ORA-00904:左:无效标识符错误。哦,没看到那是Oracle db。这里有一个链接:这正是我要找的。非常感谢。我在第1行得到这个错误:ORA-00904:子字符串索引:无效标识符,有什么想法吗?这是一个Oracle问题。