Oracle如何在字段右边补位

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

前提:
从原数据库中提取数据到新的数据库中,但是某些字段在原数据库中时字符串,而在新数据中这些字段类型又是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’)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值