Oracle中to_date函数的问题

记录一个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语句中每个部分的执行优先级?


邮箱: [email protected]    有遇到同样问题或者有解决方案的欢迎来交流


你可能感兴趣的:(Oracle,oracle,to_date,it,数据库)