子串函数

时间:2014-01-13 13:02:05

标签: sql plsql

列的输出类似于'Arpit-Bansal-Doctor-ALC FU JP-111DC'。我想提取- -之间的数据,例如Bansal

请告知使用哪种功能以及如何使用。

2 个答案:

答案 0 :(得分:1)

您可以使用内置函数INSTRSUBSTR执行此操作:

select substr(col,instr(col,'-')+1,instr(col,'-',1,2)-instr(col,'-')-1) 
from (select 'Arpit-Bansal-Doctor-ALC FU JP-111DC' col from dual);

INSTR函数调用用于查找第一个和第二个连字符,然后使用SUBSTR获取它们之间的字符串。

这非常麻烦,所以如果你想要分离出所有5个值并且你在PL / SQL中,你可以使用apex_util.string_to_table来分隔它们:

declare
   array apex_application_global.vc_arr2;
begin
   array := apex_util.string_to_table ('Arpit-Bansal-Doctor-ALC FU JP-111DC', '-');
   for i in 1..array.count loop
       dbms_output.put_Line ('Part' || i || ' is '||array(i));
   end loop;
end;

答案 1 :(得分:0)

另一种方法:

select regexp_substr('Arpit-Bansal-Doctor-ALC FU JP-111DC', '[^-]+')
from dual;

Arpit

select regexp_substr('Arpit-Bansal-Doctor-ALC FU JP-111DC', '[^-]+', 1, 2)
from dual;

Bansal

select regexp_substr('Arpit-Bansal-Doctor-ALC FU JP-111DC', '[^-]+', 1, 3)
from dual;

Doctor

select regexp_substr('Arpit-Bansal-Doctor-ALC FU JP-111DC', '[^-]+', 1, 4)
from dual;

ALC FU JP