sql - SQL ORACLE:是否可以将带有 CHAR(varchar2 数据类型)的 NUMBER 转换为 NUMBER 数据类型
问题描述
我现在有一个大问题,我真的需要你的帮助,因为我找不到正确的答案。我目前正在编写一个脚本,该脚本触发从包含原始数据(我们从 excel 文件接收的数据)的表到新的规范化模式的迁移过程。
我的问题是有一列 PRICE (varchar2 数据类型) 有一堆陷阱。例如: 540 S、 25 oo、 I 200 、S 000 。
我需要将其转换为正确的 NUMBER(9,2) 格式,这样我才能得到:5405, 2500, 1200, 5000作为前面示例的 NUMBER 和INSERT INTO my_new_table。
有什么方法可以解析这些字符串的每个 CHAR 来验证某些条件? 还是其他更好的方法?
谢谢 :)!
解决方案
您可以使用translate()
和 连同to_number()
. 您的规则并不完全清楚,但是是这样的:
select to_number(translate(price, '0123456789IoS', '012345678910'))
from t;
这将替换I
with 1
、o
with0
和 removes S
。
推荐阅读
- visual-studio-code - VSCode 上的 Link+tab 快捷方式 Emmet - 我怎样才能让“类型”包含在其中?
- javascript - 在 VPS 上的 Godaddy 中的 CPanel 上运行 Express.JS - 不工作
- php - 谷歌驱动器分页不起作用。获取对成员函数 getNextPageToken() 的调用
- javascript - 如何在 Ubuntu 上使用 tsify 和 watchify?
- python - 将 1D 列表附加到 2D 列表并制作 3D 列表
- google-calendar-api - 使用生成的实时流创建 Google 日历活动
- elasticsearch - 具有多个基本身份验证用户的 logstash http 输入
- python - 尽管有解决问题的所有建议,但脚本的 Pyobdc ModuleNotFound 错误
- c# - 如何在 C# 中使用变量作为类型
- javascript - Python selenium 使用 find_element_by 点击按钮