java - JDBC:如何在WHERE子句中处理不同数据库的IS NULL?

java - JDBC:如何在WHERE子句中处理不同数据库的IS NULL?,第1张

我有一个Java程序,它通过JDBC连接到各种数据库。 该程序用于从支持JDBC的各种数据库中获取数据 我的问题是:如何在NULL子句中处理WHERE的查询? 例如:用户向我发送了一个类似

的查询
Select * from test where col1 = somevariable

变量可以是NULL。我正在使用PreparedStatement使用setNull,以防某些变量为null。但=未更改为IS 我现在的问题是:每个数据库都理解IS NULLIS NOT NULL吗?我的想法很简单,用=替换IS 还有其他解决方案吗?

最好的问候,
彼得

最佳答案:

2 个答案:

答案 0 :(得分:2)

你可以做

... where (col1 is null and :x1 is null) or col1 = :x1

取决于上下文:x1(HQL)可能是?(PreparedStatement),并重复实际参数。

答案 1 :(得分:1)

您可以使用coalesce关键字。它应该得到每个/大多数数据库的支持。喜欢这个:

Select * 
from test 
where col1 = coalesce(somevariable,null,col1)
本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复