Оператор Oracle SQL WHERE CASE IN с 3 выходами

У меня есть небольшой фрагмент кода, который имеет ввод параметров во внешнем интерфейсе.

Варианты ввода: да, нет и все, что приравнивается к:

yes = TRUE
no = FALSE
all = TRUE & FALSE

Мой код:

SELECT c.ID, 
c.rep, 
c.cust
FROM mytable c 
WHERE '&input' IN (
CASE WHEN 'yes' THEN c.Acc = 'TRUE'
     WHEN 'no' THEN c.Acc = 'FALSE'
     WHEN 'all' THEN c.Acc IN ('TRUE', 'FALSE')
END)

Но получаю ошибку:

ORA-00920: invalid relational operator

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
45
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я думаю, ты хочешь:

SELECT c.ID, c.rep, c.cust
FROM mytable c 
WHERE (c.Acc =  = &input OR &input = 'all')

c.Acc не может совпадать с вводом, поскольку это разные значения в БД. данные имеют значение ИСТИНА или ЛОЖЬ, входы могут быть да, нет или все

Matt 25.06.2018 12:51
Ответ принят как подходящий

Используйте OR

SELECT c.ID, 
    c.rep, 
    c.cust
FROM mytable c 
WHERE (&input = 'yes' and c.Acc = 'TRUE') OR
      (&input = 'no' and c.Acc = 'FALSE') OR
      (&input = 'all' and c.Acc IN ('TRUE', 'FALSE')) 

Другие вопросы по теме