首页 > 解决方案 > SQL ORACLE:是否可以将带有 CHAR(varchar2 数据类型)的 NUMBER 转换为 NUMBER 数据类型

问题描述

我现在有一个大问题,我真的需要你的帮助,因为我找不到正确的答案。我目前正在编写一个脚本,该脚本触发从包含原始数据(我们从 excel 文件接收的数据)的表到新的规范化模式的迁移过程。

我的问题是有一列 PRICE (varchar2 数据类型) 有一堆陷阱。例如: 540 S、 25 ooI 200 、S 000 。

我需要将其转换为正确的 NUMBER(9,2) 格式,这样我才能得到:5405, 2500, 1200, 5000作为前面示例的 NUMBER 和INSERT INTO my_new_table

有什么方法可以解析这些字符串的每个 CHAR 来验证某些条件? 还是其他更好的方法?

谢谢 :)!

标签: sqloracle

解决方案


您可以使用translate()和 连同to_number(). 您的规则并不完全清楚,但是是这样的:

select to_number(translate(price, '0123456789IoS', '012345678910'))
from t;

这将替换Iwith 1owith0和 removes S


推荐阅读