Есть ли способ сделать NULL Value Act необязательным условием в MySql? - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь написать запрос JDBC с 20 необязательными параметрами поиска. Я хотел бы знать, как сделать так, чтобы набор параметров, которые не имеют значения (null), не включался в SQL, не имея слишком много операторов if / else для построения строки SQL вручную.

Я не могу использовать ... AND (column = :value OR column IS NULL), когда значение фактически равно нулю, так как результат поиска запроса не будет корректным.

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Это зависит от типа данных столбца, и его параметр имеет значение 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
   // ...
0 голосов
/ 10 мая 2018

Используйте этот синтаксис для каждого параметра поиска

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