使用Oracle从XML列中的空格获取数据结果

时间:2017-08-08 22:03:33

标签: xml oracle

由于标题标记和价格标签之间的空格,我希望数据以basics 10的形式返回,而在Oracle查询中使用提取函数时,我得到basics10

当我使用以下查询时:

SELECT Extract(column_nam,'//text()').getStringVal() FROM dual;

反对下面的XML:

 <Publishers>
   <publish>     
     <title>basics</title> 
     <price>10</price> 
   </publish>
 </Publishers>

当我在查询中使用提取函数时,它消除了所有空格。可以请一些人建议。

谢谢...

1 个答案:

答案 0 :(得分:0)

根据您提供的XML,我准备了这个demo代码:

  WITH demo AS (
   SELECT XMLTYPE (
     '<Publishers>
       <publish>     
         <title>basics</title> 
         <price>10</price> 
       </publish>
     </Publishers>') XML
   FROM dual)
    SELECT XML.title || ' ' || XML.price
    FROM demo dm,
         xmltable('/Publishers/publish' passing dm.XML
                    COLUMNS  title VARCHAR2(50) path 'title',
                             price VARCHAR2(4) path 'price') XML;

在这里,我将您的数据从XML分成两列,然后通过SELECT的连接函数将XMLTYPE table分开;

现在Result white space位于两列之间:basics 10;

Oracle 10.2开始,您可以使用XMLTABLE运算符,它允许您在XMLTYPE中将列数据投影到XML数据,从而可以直接从SQL查询数据,就好像它是关系数据一样。

有用:https://oracle-base.com/articles/misc/xmltable-convert-xml-data-into-rows-and-columns-using-sql