我正在尝试编写一个带有20个可选搜索参数的jdbc查询。我想知道如何使一组没有值(null)的参数不包含在sql中,而不需要太多if/else语句来手动构造sql字符串。我不能用 ... AND (column = :value OR column IS NULL) 当值实际为空时,查询搜索结果将不正确。
... AND (column = :value OR column IS NULL)
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 // ...
z2acfund2#
对每个搜索参数使用此语法
WHERE ( (tableName.colName = val) OR (tableName.colName IS NULL AND val IS NULL) )
2条答案
按热度按时间8yparm6h1#
它取决于列数据类型,其参数是否可为null。
一般搜索条件和/或:
用户搜索示例:
z2acfund2#
对每个搜索参数使用此语法