将Oracle中的名称字段拆分为名字和姓氏

时间:2017-07-06 13:11:18

标签: oracle

我的桌子上有一个名字,如下所示:

Emp_ID     Emp_Name
0001       Jack Skelly
0002       Susan Ryan

我需要制作看起来像这样的东西:

Emp_ID    Emp_F_Name    Emp_L_Name
0001      Jack          Skelly
0002      Susan         Ryan

我想出了这个来分割这个名字:

SubStr(d.Name, 0, InStr(d.Name, ' ')-1) as FName, 
SubStr(d.Name, InStr(d.Name, ' ')+1) as LName

我看到有人建议 INSTR ,我看到有人建议 regexp_instr ,我看到他们建议 regexp_substr < / strong>即可。我还是Oracle新手,我也不太了解,或者哪些(如果有的话)对我需要做的分割更有效。有人能告诉我分裂这个领域的最佳方法吗?我使用的方法是最好的/最有效的吗?

1 个答案:

答案 0 :(得分:1)

<span class="item">Does not <span class="highlight">match</span>.</span> <span class="item">Also not <span class="highlight">match</span>ing.</span> <span class="item"><span class="highlight">match</span></span> substr几乎总是比正则表达式函数更快/更有效。

INSTR用于查找输入字符串中空格的位置。 SUBSTR用于从输入字符串中提取子字符串。搜索(谷歌)这些函数的Oracle文档 - 您将找到详细的解释和示例。

您对问题的更大问题是业务要求 - 您如何使用&#34; John Clayton Stuart&#34;,&#34; Ali Abu Ahmad&#34;或单字?喜欢&#34; Belphegor&#34;?

下面的查询显示了解决问题的难易程度如果所有名称都具有格式&#34;名字姓氏&#34;。

instr