列的输出类似于'Arpit-Bansal-Doctor-ALC FU JP-111DC'。我想提取- -
之间的数据,例如Bansal
。
请告知使用哪种功能以及如何使用。
答案 0 :(得分:1)
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