oracle 表复制 long,关于oracle的数据库的数据Long和Number的转化字段

在数据处理的过程中发现,有需要A 表的 id(Number) 和B表的source_code(Char)类型的关联数据;

后来发现 有类似 20150619120238-145 这种格式的source_code也不是科学记数法的数据;

select a.id,

nvl(tem.cancel_amount,0.00) as am

from a

left join (select a1.source_code,b.cancel_amount,b.cancel_date

from (select det.id,det.source_code

from det

where source_type = 6

and return_type = 3) a1

inner join (select relative_id as relative_id,

sum(cancel_amount) as cancel_amount,

max(create_date) as cancel_date

from detail

where source_order_type = 2

group by relative_id) b on a1.id = b.relative_id) tem onto_char(a.id) =

tem.source_code

where 1 = 1

and a.TOTAL_DATE >= to_date('2016-05','yyyy-mm')

and a.TOTAL_DATE <= to_date('2016-08','yyyy-mm')

order by a.TOTAL_DATE,a.id

单独查询tem和 a都是正确的 。错误就在关联处没有加上 to_char;总是报告“无效数字“的错误;

经过同事讨论发现:

select to_number(20150619120238-145) from dual; -------------oracle数据库会自动做减法; 运行没问题 当做了一个表达式 减法运算;

select to_number(‘’20150619120238-145‘’) from dual;---------------单引号的字符串强制类型转换,报错 :无效数字;

oracle就是有这么多规矩 ,还需要学习的东西有很多……

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值