暂无图片
oracle 有没有自带的分割字符的函数?
我来答
分享
暂无图片 匿名用户
oracle 有没有自带的分割字符的函数?

oracle 有没有自带的分割字符的函数?

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
刘晓华

这个貌似没有,我这里给你提供一个,也是网上的,我用了好使


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
暂无图片
DarkAthena

刚好前几天看自带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
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏