由于标题标记和价格标签之间的空格,我希望数据以basics 10
的形式返回,而在Oracle查询中使用提取函数时,我得到basics10
。
当我使用以下查询时:
SELECT Extract(column_nam,'//text()').getStringVal() FROM dual;
反对下面的XML:
<Publishers>
<publish>
<title>basics</title>
<price>10</price>
</publish>
</Publishers>
当我在查询中使用提取函数时,它消除了所有空格。可以请一些人建议。
谢谢...
答案 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