在插入到Oracle之前更改XML字段中的文本

问题描述:

我有一列有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

在视图定义,SELECT子句中AS(代码行7)后右

取代

 SELECT TARGET_ID, TARGET_COST 

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

这将同时解释$为货币符号(无需移除它)将值转换为NUMBER。只要确保格式模型在小数点两侧包含足够的9就可以覆盖XML表中所有可能的值。