Как игнорировать условие, которое пользователь не передал в SQLITE?

#python #sql #sqlite

#python #sql #sqlite

Вопрос:

Я делаю свой проект crm с помощью SQLITE FLASK. И мне нужна функция, позволяющая пользователю вводить условие для обработки результата.

Я надеюсь, что мой оператор SQL может игнорировать условие WHERE, если параметр равен пробелу или нулю.

Например, мой ввод — «ИМЯ», «ВОЗРАСТ», «ПОЛ», поэтому мое утверждение будет

 SELECT *
FROM CUSTOMER
WHERE NAME = 'James' AND AGE = '25' AND GENDER = 'M'
 

Но я надеюсь, что если пользователь не ввел «NAME», мой оператор SQL может быть чем-то вроде кода ниже

 SELECT *
FROM CUSTOMER
WHERE AGE = '25' AND GENDER = 'M'
 

Я знаю, может быть, я могу сделать это с помощью объединения строк, но я надеюсь, что смогу сделать это с помощью инструкции SQL.

Ответ №1:

Вы можете сделать это с OR помощью оператора для каждого из столбцов, также проверяя, является ли передаваемое вами значение параметра NULL или строка с пробелами:

 SELECT *
FROM CUSTOMER
WHERE (NAME = :name OR TRIM(COALESCE(:name, '')) = '')
  AND (AGE = :age OR TRIM(COALESCE(:age, '')) = '')
  AND (GENDER = :gender OR TRIM(COALESCE(:gender, '')) = '') 
 

Ответ №2:

Вы можете использовать нулевое условие следующим образом:

 SELECT *
FROM CUSTOMER
WHERE (NAME = :name_input or :name_input is null)
  AND (AGE = :age_input or :age_input is null)
  AND (GENDER = :gender_input or :gender_input is null)