各位大侠,如图可以看到在trunc()函数发生了隐式转换,那我需要怎么做才能知道
具体发生了什么转换呢?
望大神指点迷津,不胜感激
关于ORACLE trunc()的隐式转换
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- lshen01 2023-03-16 10:09关注
参考GPT和自己的思路:
根据您提供的截图,可以看出发生了隐式类型转换。在trunc()函数中,它的参数为数值型,但是在这里给了一个字符型的值,系统会自动进行隐式类型转换,将字符型转化为数值型,然后再执行trunc()函数。具体转换规则如下:
如果字符串是数字类型的,可以按照数字类型进行转换。
如果字符串不是数字类型的,则先将其转换为数值类型,如果转换失败,则转换为0。
在您的情况下,'0800'被转换为了800,然后再进行了trunc()函数的计算。如果需要避免此类隐式转换,可以在函数参数中使用显式类型转换函数(如to_number()将字符型转换为数值型)。
解决 无用评论 打赏 举报