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

时间:2017-07-14 14:34:56

标签: xml database oracle select xml-column

我有一个包含XML格式数据的列。我正在基于该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中显示它并用于我的计算。

有人可以指导我进行转换的地方吗?

1 个答案:

答案 0 :(得分:1)

在视图定义中,紧跟在AS之后的SELECT子句中(代码的第7行)

替换

       SELECT TARGET_ID, TARGET_COST

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

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