有没有办法在MySql中将NULL值法作为可选条件?

时间:2018-05-09 22:22:02

标签: java mysql sql jdbc optional-parameters

我试图用20个可选的搜索参数编写JDBC查询。我想知道如何在没有太多if / else语句手动构造SQL字符串的情况下,使一组没有值(null)的参数不包含在SQL中。

当值实际为null时,我无法使用... AND (column = :value OR column IS NULL),因为查询搜索结果不正确。

2 个答案:

答案 0 :(得分:2)

对每个搜索参数使用此语法

WHERE 
(
    (tableName.colName = val) 
    OR 
    (tableName.colName IS NULL AND val IS NULL)
)

答案 1 :(得分:1)

它取决于列数据类型,其参数可以为空或不是。

一般搜索条件和/或:

WHERE
   (:col1 = col1_special_value OR col1 = :col1)
   AND
   (:col2 IS NULL OR col2 = :col2)
   AND
   // ...

示例用户搜索:

WHERE
   (:name IS NULL OR name = :name) // :name is String - Nullable
   AND
   (:age = 0 OR age = :age)    // :age is int - Not nullable
   AND
   // ...