Oracle如何在字段右边补位

来源:互联网 发布:美发软件免费下载 编辑:程序博客网 时间:2024/04/29 21:28

最近在做数据迁移碰到的坑大大小小也快有十多个了,今天就举出一个比较好描述又比较实用的坑吧。

前提:
从原数据库中提取数据到新的数据库中,但是某些字段在原数据库中时字符串,而在新数据中这些字段类型又是DATE,所以导致了需要利用to_date命令来转换它们,但是在进行数据迁移的过程中报了如下的错误

这里写图片描述

经过仔细的比对发现了错误的根源,如下图。这就是这几天为什么浪费了那么多时间的原因——原数据库的字段非常不规范,于是第一反应是在后面补上00,这样是不是就可以了呢?

这里写图片描述

于是把命令改成了下面的

replace(RPAD(YQSJ,8),’ ‘,’0’)

于是就把这些不规范的六位数字改成了8位数字(后面补零),于是又启动了起来,发现报了新的错误 如下图:

ORA-01847: 月份中日的值必须介于 1 和当月最后一日之间

这才恍然大悟,需要补齐的是月份中的日期,怎么可能有0日?所以要把这两位给补成01啊!

于是又修改了命令
replace(RPAD(YQSJ,8),’ ‘,’01’)

=。=于是出现了下面的情况

200107 变成了2001070101
200108 变成了 2001080101

于是去查了replace的用法=。=

使用的函数为replace()

含义为:替换字符串

replace(原字段,“原字段旧内容“,“原字段新内容“,)

最终经过思考改出了最后的语句达到了最后的效果:

,replace(RPAD(replace(RPAD(YQSJ,8),’ ‘,’0*’),8),’*’,’1’)

原创粉丝点击