繁体   English   中英

Postgres 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM