oracle数据库的隐式转换

问题场景

使用oracle数据库时,对于使用varchar2定义的字段,查询sql却不使用单引号的场景下,查询有时候会出现“无效数字”的报错。

问题原因

这涉及到oracle数据库隐式转换的问题,去除这个查询条件,其他查询条件查到的所有数据之后,会进行全表扫描,此时会进行隐式转换,如果此文本数据转换不了数字,就会报错。

问题解决

临时解决方案:先去除此查询条件,然后剩下的数据进行核查,看看是否是纯数字的文本,如果不是,将其去除。

最终解决方案:1、如果确定此字段一定会是数字类型,则使用number类型存储;2、如果不是纯数字类型,则查询语句使用单引号。

总结

1、oracle的隐式转换并没有参数开关。
2、强制要求不要使用隐式转换,否则会有很大问题。

你可能感兴趣的:(oracle,数据库,oracle,sql)