在插入到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中查看并用于我的计算。
任何人都可以指导我转换的地方吗?
答
在视图定义,SELECT子句中AS(代码行7)后右
取代
SELECT TARGET_ID, TARGET_COST
与
SELECT TARGET_ID, TO_NUMBER(TARGET_COST, '$999999999999.99999')
这将同时解释$为货币符号(无需移除它)和将值转换为NUMBER。只要确保格式模型在小数点两侧包含足够的9就可以覆盖XML表中所有可能的值。
如果你的TARGET_COST投影保证总是以'$'开头,否则是一个有效的数字,那么你使用'to_number(substr(target_cost,2))'。否则,显示一些数据。 – jeff6times7