我的桌子上有一个名字,如下所示:
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新手,我也不太了解,或者哪些(如果有的话)对我需要做的分割更有效。有人能告诉我分裂这个领域的最佳方法吗?我使用的方法是最好的/最有效的吗?
答案 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