Я ищу элегантное решение следующей проблемы: у меня есть таблица с некоторыми данными, которая классифицируется по столбцу ok (логическое значение). Если ok истина, то данные действительны, если ложь, то нет.
Теперь у меня есть параметр filterOff (логическое значение), который должен выполнять следующие действия: если для него установлено значение true, то он должен игнорировать столбец ok (или выполнить поиск для оба ok = TRUE и ok = FALSE) и возвращают все строки. Если установлено значение false, то оно должно возвращать только те строки, для которых ok = true. Если он не установлен (равно NULL), он должен вести себя так же, как если бы он был ложным.
Условия
1. filterOff == NULL OR filterOff == FALSE => ok = TRUE
2. filterOff == TRUE => ok = TRUE OR ok = FALSE
Для 1-го я бы используйте вот что: ok <> COALESCE(filterOff, FALSE)
Однако в 2-м условии отсутствует часть ok = FALSE
.
Кто-нибудь может помочь? Заранее спасибо!
С наилучшими пожеланиями
IceThunder