在oracle sql中按空格拆分具有两个或三个单词的列
我的表中有一个遗留列,它将名称和姓氏值存储在一起。 例如:在oracle sql中按空格拆分具有两个或三个单词的列,sql,regex,oracle,split,Sql,Regex,Oracle,Split,我的表中有一个遗留列,它将名称和姓氏值存储在一起。 例如:Mike Muyra或John Kutgira 我需要用空格分隔列 结果必须是这样的(最后一个单词是姓,其他单词是名) 我已经研究了两个小时了。(REGEXP\u SUBSTR看起来很酷),但我找不到解决方案。您可以使用正则表达式。但是,由于该规则涉及最后一个空格,因此常规字符串操作也可以: select trim(substr(legacy, 1 - instr(reverse(legacy), ' '))) as surname,
Mike Muyra
或John Kutgira
我需要用空格分隔列
结果必须是这样的(最后一个单词是姓,其他单词是名)
我已经研究了两个小时了。(REGEXP\u SUBSTR看起来很酷),但我找不到解决方案。您可以使用正则表达式。但是,由于该规则涉及最后一个空格,因此常规字符串操作也可以:
select trim(substr(legacy, 1 - instr(reverse(legacy), ' '))) as surname,
trim(substr(legacy, 1, length(legacy) - instr(reverse(legacy), ' '))) as restname
您可能希望将它们包装在“%”之类的旧版
中,以确保它们有一个空格。您可以使用正则表达式。但是,由于该规则涉及最后一个空格,因此常规字符串操作也可以:
select trim(substr(legacy, 1 - instr(reverse(legacy), ' '))) as surname,
trim(substr(legacy, 1, length(legacy) - instr(reverse(legacy), ' '))) as restname
您可能希望将这些字符包装在“%”之类的旧大小写中,以确保它们有一个空格。尝试找出空格(“”)字符的最后一个索引,然后使用子字符串(我猜第一部分和最后一部分使用两次)来获得所需的内容
下面是部分的最后一个索引的示例。尝试找出空格(“”)字符的最后一个索引,然后使用子字符串(我猜第一部分和最后一部分使用两次)来获得所需内容
select trim(substr(:p_str, 1, instr(:p_str, ' ', -1)-1)) first_name,
trim(substr(:p_str, instr(:p_str, ' ', -1)+1)) surname
from dual;
这是零件的最后一个索引。PS:也有,你也可以在那里找到一些帮助。PS:也有,你也可以在那里找到一些帮助。非常好用。只需为前后空白添加TRIM()。一切都好。谢谢你。只需为前后空白添加TRIM()。一切都好。谢谢你的回答当然值得一点解释。请参阅。评论将有助于创建可搜索的内容。你的答案当然值得一点解释。请参阅。评论将有助于创建可搜索的内容。
select trim(substr(:p_str, 1, instr(:p_str, ' ', -1)-1)) first_name,
trim(substr(:p_str, instr(:p_str, ' ', -1)+1)) surname
from dual;