oracle 中解析某个表各个字段的描述 {}{}{}

      昨天老大让我做一个数据字典生成工具,也就是将 oracle 数据库表的各个表结构写入 excel ,仔细琢磨了一下,有点难。

不过问题既然出来了,那就一点一点的解决咯,首先碰到的问题就是字符串的拆分。

      因为我们这个项目中的表各个字段的 comments 格式是:{}{}{}, 所以要解析这三个{}内的内容,并将其作为列写入 word 表。

对 oracle 的语法也不怎么熟,在网上找了些资料,看准了2个函数 instr 和 substr, 因为好像 oracle 没有系统函数可以实现分割字符串(如果有,还请高手教我),

就像 .net 中的 string.split(char c) 一样,所以只能自己写了。

      写了一个自定义函数,源码如下:

create or replace function splita(string varchar2, splitstring varchar2,num integer) return varchar2 is

index1
integer;
index2
integer;
value1
varchar2(100); --保存第一个{} 内的信息
value2 varchar2(100);--保存第二个{} 内的信息
value3 varchar2(100);--保存第三个{} 内的信息
valueend varchar2(100); --最后设定的返回值
--
解析 comments, 获得各个 {} 中的内容
begin

index1 :
= instr(string,splitstring,2,1);
value1 :
= substr(string,2,index1-2);

index2 :
= instr(string,splitstring,2,2);
value2 :
= substr(string, index1+2, index2-index1-2);

value3 :
= substr(string,index2+2,instr(string, '}',1,3)-index2-2);

if num=1 then
valueend :
= value1;
elsif num
=2 then
valueend :
= value2;
elsif num
=3 then
valueend :
= value3;
end if;

return valueend;

end;

其中第三个参数表示要获取的是哪个 {} 内的内容。

原文地址:https://www.cnblogs.com/jiejie_peng/p/1727658.html