java—有没有一种方法可以让空值作为mysql中的可选条件?

nhaq1z21  于 2021-06-25  发布在  Mysql
关注(0)|答案(2)|浏览(398)

我正在尝试编写一个带有20个可选搜索参数的jdbc查询。我想知道如何使一组没有值(null)的参数不包含在sql中,而不需要太多if/else语句来手动构造sql字符串。
我不能用 ... AND (column = :value OR column IS NULL) 当值实际为空时,查询搜索结果将不正确。

8yparm6h

8yparm6h1#

它取决于列数据类型,其参数是否可为null。
一般搜索条件和/或:

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

z2acfund2#

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

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

相关问题