[英]Spring namedParameterJdbcTemplate and a list parameter: how to check if it is null in SQL?
[英]Postgres SQL - check if parameter is null
我在使用休眠本机查询的 Java7 应用程序中使用 Postgres 12.6。
我正在尝试构建一个 SQL 语句,该语句从接收一个参数的表journalheader
中读取结果。 参数值可以是'Matched'或'Unmatched' 。
以下解决方案是不够的,因为它不满足null
值:
select * from journalheader where matched_status = ?1;
该表确实有一些行, matched_status
null
。 我希望这些行成为“不匹配”过滤器的一部分。
IE
(?1)
是'Matched' ,那么它只会返回matched_status
= 'Matched' 的行。(?1)
是'Unmatched' ,那么它将只返回matched_status
= 'Unmatched' 或null 的行。问题
我还如何检查null
值?
可能的解决方案
我想我可能需要对参数值进行检查,如果它是“不匹配” ,则在语句中包含or matched_status is null
。 我只是不确定如何检查 sql 语句中参数的值。
select * from journalheader where matched_status = ?1 or <if ?1 equals 'Unmatched'> matched_status is null;
您可以使用关键字COALESCE
select * from journalheader where COALESCE(matched_status, 'Unmatched') = ?1;
这意味着使用matched_status
的值,除非该值为null
,如果该值为null
则使用该值Unmatched
如果我正确理解您的问题,您可以尝试使用 COALESCE
select *
from journalheader
where matched_status = COALESCE(?1,'Unmatched')
或情况下
select *
from journalheader
where matched_status =CASE WHEN ?1 is null THEN 'Unmatched' ELSE ?1 END
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.