数据库中有一个字段,是XMLType类型的,现在需要对字段进行分解,得到其中的数据如:<values><Tvalue>123s</Tvalue><Tvalue>N97</Tvalue><Tvalue>HTC G12</Tvalue><values>
最终得到: |123s|N97|HTC G12|

解决方案 »

  1.   

    substr 第三参数是lenght,不是endindex
    对xml用extractvalue,直接xpath明确多了
    select extractvalve(xmltype(t_xml),('/userinfo/username[1]')) from t
    http://www.iteye.com/topic/1122442
      

  2.   

    <?xml version="1.0" encoding="GBK"?>
      

  3.   

    你的文件没有上面一段?所以不能用xpath来解析!
      

  4.   


    我的数据不是标准的XML结构。
    就是一个字段,然后数据类型是XMLType结构。
    <values>
    <Tvalue>123s</Tvalue>
    <Tvalue>N97</Tvalue>
    <Tvalue>HTC G12</Tvalue>
    <values>
    数据格式就是这样的。现在的问题是如何取得<Tvalue>中的值,然后把这些值用竖线分割的形式解析出来。得到如下格式的数据|123s|N97|HTC G12|
      

  5.   

    写错了,是extractvalue而不是extractvalve
      

  6.   

    select extractvalue(xmltype(xmlstr),('/userinfo/username[1]')) || '||'|| extractvalue(xmltype(xmlstr),('/userinfo/value[1]')) from menu;可行的,想上面这么写