2017-07-14 67 views
0

我有一列有XML格式的數據。我正在創建基於該XML數據的視圖。在插入到Oracle之前更改XML字段中的文本

從XML中獲取數據併發送到視圖的代碼與以下代碼類似。我原來的代碼有120-150列。

CREATE VIEW Test.TEST_VW 
(
    TARGET_ID, 
    TARGET_COST 
) 
AS 
    SELECT TARGET_ID, TARGET_COST 
     FROM TABLE_XML, 
      XMLTABLE (
       '/root/Data' 
       PASSING XML.DATA 
       COLUMNS TARGET_ID VARCHAR2 (50) PATH 'TARGET_ID', 
         TARGET_COST VARCHAR2 (50) PATH 'TARGET_COST') 
     WHERE XML.TARGET_ID = 4 
    ORDER BY TARGET_ID; 

TARGET_COST的數據在XML中保存爲123美元。我想修剪第一個字母,以便我可以在數字格式123中查看並用於我的計算。

任何人都可以指導我轉換的地方嗎?

+0

如果你的TARGET_COST投影保證總是以'$'開頭,否則是一個有效的數字,那麼你使用'to_number(substr(target_cost,2))'。否則,顯示一些數據。 – jeff6times7

回答

1

在視圖定義,SELECT子句中AS(代碼行7)後右

取代

 SELECT TARGET_ID, TARGET_COST 

 SELECT TARGET_ID, TO_NUMBER(TARGET_COST, '$999999999999.99999') 

這將同時解釋$爲貨幣符號(無需移除它)將值轉換爲NUMBER。只要確保格式模型在小數點兩側包含足夠的9就可以覆蓋XML表中所有可能的值。

相關問題