在插入 Oracle 之前更改 XML 字段中的文本
Alter text from XML field before inserting into Oracle
我有一列包含 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。我想要 trim 第一个字母,以便我可以在视图中以数字格式 123 显示它并用于我的计算。
谁能指导我在哪里可以完成转换?
在视图定义中,在 AS 之后的 SELECT 子句中(代码第 7 行)
替换
SELECT TARGET_ID, TARGET_COST
和
SELECT TARGET_ID, TO_NUMBER(TARGET_COST, '9999999999.99999')
这将同时将 $ 解释为货币符号(无需删除它)和 将值转换为 NUMBER。只需确保格式模型在小数点两边包含足够的 9,以涵盖 XML table.
中的所有可能值
我有一列包含 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。我想要 trim 第一个字母,以便我可以在视图中以数字格式 123 显示它并用于我的计算。
谁能指导我在哪里可以完成转换?
在视图定义中,在 AS 之后的 SELECT 子句中(代码第 7 行)
替换
SELECT TARGET_ID, TARGET_COST
和
SELECT TARGET_ID, TO_NUMBER(TARGET_COST, '9999999999.99999')
这将同时将 $ 解释为货币符号(无需删除它)和 将值转换为 NUMBER。只需确保格式模型在小数点两边包含足够的 9,以涵盖 XML table.
中的所有可能值