Sql 子串函数
列的输出类似于“Arpit Bansal Doctor ALC FU JP-111DC”。我想提取Sql 子串函数,sql,plsql,Sql,Plsql,列的输出类似于“Arpit Bansal Doctor ALC FU JP-111DC”。我想提取-之间的数据,例如Bansal 请建议使用哪一个函数以及如何使用。您可以使用内置函数,如下所示: 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函数调用用于
-
之间的数据,例如Bansal
请建议使用哪一个函数以及如何使用。您可以使用内置函数,如下所示:
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,则可以使用以下方法将它们分隔开:
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;
另一种方法:
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
为什么不是“医生”?或者“Bansal Doctor”?或者为什么不
ALC FU JP
您是说列值是由5个连字符分隔的值串联而成,即“Arpit”、“Bansal”、“Doctor”、“ALC FU JP”、“111DC”,并且您只想得到第二个值?是的,您是对的,我想分别提取所有值,如:1。Arpit2.Bansal,博士,@TonyAndrews你是对的,但现在我想利用连字符单独提取值。