Oracle不同版本执行相同SQL语句,结果不一样,请大神赐教

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle不同版本执行相同SQL语句,结果不一样,请大神赐教相关的知识,希望对你有一定的参考价值。

Oracle 11.2.0.1.0 执行SELECT * FROM com_employee a
where 123 = 'ALL' or 'ALL' = 'ALL'不会报无效数字的错误,而在Oracle 11.2.0.4.0 执行却会报错呢?请大神来解释一下

应该是两个版本对语句编译时的执行顺序有差异,第一个版本在all=all满足的条件下直接忽略了字符与数字类型不匹配的错误。而第二个版本还是则从左到右顺序执行,首先触发了错误语句追问

但是我在两个版本的Oracle下,把or两边的条件调换了一下顺序,两个都是可以执行,不会报错的。如果是顺序问题,理论上条件调换了顺序,应该也是一个报错,一个可以执行的?为什么会这样呢?也就是说为什么有一个数据库里,无论条件先后顺序怎样,都不会报错的。

追答

楼主研究很细哈。个人觉得第一个版本不看顺序,优先检查满足的条件

参考技术A 这个语句是干啥呢?乱写的?数字和字符型追问

这个是我为了测试原因写的一个简单的SQL,,原本的SQL的条件也是差不多的。其实就想知道为什么不同版本的Oracle执行sql,一个报错了,一个却可以执行。如果大神知道的话,请指教一下

以上是关于Oracle不同版本执行相同SQL语句,结果不一样,请大神赐教的主要内容,如果未能解决你的问题,请参考以下文章

sql语句的执行顺序是啥,为啥下面这两个sql执行的结果是一样的

UPDATE SQL 不同环境执行结果不一样

oracle存储过程连续执行结果不同

SQL语句为啥是大写

如何让多个不同的SQL语句一起执行?

一条sql语句在两个机器上执行速度不一样的问题