Oracle's and and or operations--and filtering does not work

select * from emp 

where 1=1 and (ename='20') and (ejob <> 'clerk')  or (eleader like '%a%') 

If written like this, adding or will make and not work, because at the beginning and filtered the data, and later or added the filtered data;

Correct way:

where 1=1 and (ename='20') and (ejob <> 'clerk') or (eleader like '%a%' and  ejob <> 'clerk' and ename='20')

In this way, the data you want to filter will be filtered out;

Mybatis-plus writes like this:

queryWrapper.or(i->i.like("eleader","a").ne("clerk",'a')) 

Guess you like

Origin blog.csdn.net/pshdhx/article/details/108392409