#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)