记录一个Oracle中的坑,暂时还没有解决
现有一条sql语句,如下结构
select * from table where dateType='1' and to_date(filed,'yyyy-mm-dd')>'2018-2-6'
当where条件里使用了to_date()函数,那么这个函数查找的值会从整个表中 查询,dateType='1'这个条件会在
to_date()函数之后执行。
假设table表中数据有dateType='1'和dateType='0'两个类型,如果dateType='0'的数据不符合to_date()
函数的格式,那么sql就会报错
有以下几个问题:
1.sql的执行顺序不是应该where条件从左至右吗,这里的执行顺序被改变与oracle的性能优化有关吗
2.把其他条件的查询单独拎出来,做成一个子查询,依旧会有这种情况
3.有没有什么办法可以设置sql语句中每个部分的执行优先级?
邮箱: rj.han@outlook.com 有遇到同样问题或者有解决方案的欢迎来交流