我有一个查询,其中一些参数有时可以到达null,当这些参数到达null时,我希望它们忽略这些条件。
SELECT DISTINCT on (i.empleado) i.id
FROM rrhh.imputacion as i
INNER JOIN rrhh.empleado as e ON e.id = i.empleado
JOIN commons.persona AS pe ON e.persona_comun = pe.id
INNER JOIN rrhh.parte__imputaciones as pi ON pi.imputacion = i.id
INNER JOIN rrhh.parte as p ON pi.parte = p.id
WHERE i.dia >= '2017-12-04' AND i.dia <= '2017-12-11' and p.borrador = false AND e.fecha_fin_contrato IS NULL AND e.security_domain_id = 2
and i.empleado = 126
ORDER BY i.empleado, i.dia DESC,i.id
我需要参数的值:
&#34;和iempleado = 126&#34; &lt; - 如果值为NULL,则忽略它,并带来所有记录,而不用iempleado
过滤我没有看到postgres的具体例子。
谢谢。
答案 0 :(得分:1)
实现此目的有两种方法
在值上添加OR
条件以测试其可为空性。像这样:
and (? is null or i.empleado = ?)
在Java中,在这种情况下,您必须将参数应用两次。
但是,如果您使用的是Spring NamedParameterJdbcTemplate
,那么您只需设置一次即可:
and (:emp is null or i.empleado = :emp)