匿名用户oracle 有没有自带的分割字符的函数?
这个貌似没有,我这里给你提供一个,也是网上的,我用了好使
create or replace function f_str_to_col(in_text varchar2,--String
fh varchar2,--separator
n number) --No. of separator
return varchar2 is
Result varchar2(4000);
begin
if n > 1 then
SELECT substr(in_text,
decode(instr(in_text, fh, n - 1, n - 1),
0,
0,
instr(in_text, fh, n - 1, n - 1) + 1),
decode(sign(instr(in_text, fh, n, n) -
instr(in_text, fh, n - 1, n - 1)),
1,
(instr(in_text, fh, n, n) -
instr(in_text, fh, n - 1, n - 1)) - 1,
-1,
length(in_text),
0,
0)
)
into Result
FROM dual;
else
select substr(in_text, 0, instr(in_text, fh, 1, 1) - 1) into Result from dual;
end if;
return(Result);
end f_str_to_col;
评论
有用 0
刚好前几天看自带DBMS包的时候看到了有个自带的过程可以变向的实现部分分割字符的场景
declare
tablen number;
tab dbms_utility.uncl_array;
begin
dbms_utility.comma_to_table(list => 'a,b,c',
tablen => tablen,
tab => tab);
for i in 1..tablen loop
dbms_output.put_line(tab(i));
end loop;
end;
a
b
c
这个过程是用逗号分割字符串,并且会校验分割出来的字符串是否为合法的表名,如果还有其他特殊符号或者是数字开头的就会报错了。
评论
有用 0
墨值悬赏

