有没有办法让 NULL 值作为 MySql 中的可选条件?

Is There a Way to Make a NULL Value Act as an Optional Condition in MySql?

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

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

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

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

这取决于列的数据类型及其参数是否可为 null。

一般搜索条件AND/OR:

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