oracle 对xmlelement的操作

在对oracle里字段生成xml语句时,

table_a有field1 field2 field3这三个字段,如果我们想要生成一个<item attr_a =" field_1_value" attr_b = "field_2_value" attr_c ="field_3_value">这样我们就要写的sql

select xmlelement("item",xmlattributes(field1  as "attr_a" field2  as "attr_b" field3  as "attr_c")) from table_a t这样我们就生成了clob格式的xml语句,如果我们要转化成字符串来方便操作的话,在xmlelement前面加一个substr,这样我们就可以转化成字符串,在这里substr(string,1)用这种方便我们就可以不指定长度,让xml全面显示成字符串方式,当然在使用xmlelement时,如果field_2里为空时,这样的<item attr_a =" field_1_value" attr_c ="field_3_value">这样的xml语句了,attr_b就消失了,这是让人蛮郁闷的,所以我们通过一个nvl()这样函数,把字段为空都变为" "字段有一个空格,这样我们成select xmlelement("item",xmlattributes(nvl(field1,' ')  as "attr_a"  nvl(field2,' ')  as "attr_b" nvl(field3,' ')  as "attr_c")) from table_a这样我们的结果就成了<item attr_a =" field_1_value"   attr_c =" "> attr_c ="field_3_value"> 接下来,就我们就去空格,这个我们就replace来转化一下就好了, select replace(xmlelement("item",xmlattributes(nvl(field1,' ')  as "attr_a"  nvl(field2,' ')  as "attr_b" nvl(field3,' ')  as "attr_c")) ,'" "', '""') from table_a这样转化以后我们就会发现,这样已经转成了字符串方式,还是蛮好的。

 

 

在oracle编程里发现在使用||这个连接标志符时,如果我们 string1 := string2||string3这样我就可以用string2与string3合并,但是这样就有一个问题,如果string2或string3当中有一个为空时,这样我操作就会出错,这样我们就要多做一步操作要判断string2与string3是否为空的情况,这样的写法就非常不方便,而我们可以用select string2||string3 into string1 from dual通过select方式可以不用去判断是否为空,这样就很方便,对于多个字符串合并的情况来说。

 

在oracle编程是我们可能会经常使用到select field into string from table这种情况,在使用into时我们可能有两个问题,一是如果查询到的是多条数据时,这样在into 一个string里面就会出错,这样的话,我们可以

select field into string from table where rownum <=1 来解决只取一条记录的情况,第二种情况就是sselect field into string from table where rownum <=1里面返回的是为空,这样就没有into到string也是会出错,这里我们就要使用 select nvl((sselect field  from table where rownum <=1),'field is null') into string from dual我们能过dual这个万用表与nvl来做判断,如果为空时,这里是用'field is null'写入string里面。这样可以根据要求来写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值