当列值为null时,不要在where条件中附加"and"子句

Ank*_*oel 3 sql oracle spring-data-jpa

我有一个查询,其中我不想在列值为空时的条件中附加"和"子句,例如

select * from x where x.abc = 'ACTIVE' and x.start_date < sysdate and x.end_date > sysdate
Run Code Online (Sandbox Code Playgroud)

所以在这个我希望x.end_date仅在其值不为null时才适用.没有任何存储过程,只是一个简单的查询.

我还想使用条件构建器和谓词将此查询转换为spring-data jpa规范.

Gor*_*off 5

你可以使用or:

select *
from x
where x.abc = 'ACTIVE' and
      x.start_date < sysdate and
      ( x.end_date > sysdate or x.end_date is null );
Run Code Online (Sandbox Code Playgroud)