2017-08-08 56 views
1

由於標題標籤和價格標籤之間存在空格,我期望數據返回爲basics 10,但實際上,在Oracle中使用提取函數時,我得到basics10查詢。使用Oracle獲取數據結果與來自XML的列之間的空格

當我使用下面的查詢:

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

針對XML象下面這樣:

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

當我使用提取功能在我的查詢是消除所有的空間。有人可以請同樣的建議。

謝謝...

+0

請編輯你的問題來修復格式。 XML中的空格位於元素之間,而不是實際內容(文本)的一部分。您是否真的希望將每個文本值作爲結果集中的單獨列? –

回答

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;

而現在Resultwhite space兩列之間:basics 10;

Oracle 10.2可以使用XMLTABLE運營商,它允許你投射到XML數據列在XMLTYPE,使其能夠直接從SQL查詢數據,好像它是關係數據。

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

+0

謝謝你的迴應,對不起,我沒有清楚地提到這個問題。實際上,我的問題是我剛剛發送了示例XML,但是我的XML將非常龐大,我只需要從特定標籤中提取數據。這個xml不會對每個項目都是靜態的,它會發生變化,裏面的標籤也會發生變化。我在此處附加了示例XML: – Saritha

+0

<?xml version =「1.0」encoding =「UTF-8」?> testž > Saritha

+0

我想閱讀來自passage_para標籤的數據,通過後我有2個空格之前表達和表達標籤後我有一個空間..等..,當我使用提取查詢從XMLTYPE列獲得passage_para標籤它是消除所有的空間。並給予下面的輸出:<數學的xmlns = 「數學」 的xmlns:的xlink = 「的xlink」 顯示= 「內聯」 溢出= 「滾動」>Ž >我不想要,因爲它正在取出空間。所需的輸出是「z> 0」 – Saritha

相關問題