oracle 转换为double,oracle中的varchar2能和double直接计算吗?

8008bced5c5f2e2c6fbb9cbe7d6881c4.png

慕仰1329654

隐式转换是ORACLE自己去处理的,有一些规则:对于INSERT和UPDATE操作,oracle会把插入值或者更新值隐式转换为字段的数据类型。对于SELECT语句,oracle会把字段的数据类型隐式转换为变量的数据类型,例如:假设id列的数据类型为varchar2 ,select * from t where id=1,这里的id会自动转为number型。一个字符型和一个number型比较,ORACLE会把字符型转换成number,当一个字符型和一个日期型比较,ORACLE会把字符型转换成日期型(如果可以,即字符的格式符合session定义的nls_date_format),不然会报错。如果调用函数或过程等时,如果输入参数的数据类型与函数或者过程定义的参数数据类型不一致,则oracle会把输入参数的数据类型转换为函数或者过程定义的数据类型赋值时,oracle会把等号右边的数据类型转换为左边的数据类型用连接操作符(||)时,oracle会把非字符类型的数据转换为字符类型如果字符类型的数据和非字符类型的数据(如number、date、rowid等)作算术运算,则oracle会将字符类型的数据转换为合适的数据类型,即这些数据类型可能是number、date、rowid等。如果CHAR/VARCHAR2 和NCHAR/NVARCHAR2之间作算术运算,则oracle会将她们都转换为number类型的数据再做比较(你的问题属于这种情况)。比较CHAR/VARCHAR2 和NCHAR/NVARCHAR2时,如果两者字符集不一样,则默认的转换方式是将数据编码从数据库字符集转换为国家字符集。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值