Использование оператора case вместо логического оператора - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть оператор CASE, например

CASE WHEN a AND b THEN c ELSE d END

В моей таблице есть поле, содержащее логические операторы, такие как AND, OR

Я хочу использовать это поле ввместо использования оператора непосредственно в приведенном выше операторе case, так:

CASE WHEN a (CASE WHEN field.value = 'AND' THEN 'AND'OR 'OR' END) b THEN c ELSE d END

Я попытался также ввести пользовательскую функцию, но ни одна из них не работала, и я получил ошибку в пропущенном выражении.

Что такоеЯ скучаю?Спасибо.

1 Ответ

0 голосов
/ 06 декабря 2018

Чего вам не хватает, так это того, что строка не является оператором.Возможно, лучшее, что вы можете сделать, это:

 (CASE WHEN field.value = 'AND' AND (a AND b) THEN 'true'
       WHEN field.value = 'OR' AND (a OR b) THEN 'true'
  END) = 'true'

Или проще:

(field.value = 'AND' AND (a AND b)) OR
(field.value = 'OR' AND (a OR b))

Однако я с подозрением отношусь к вашей общей модели данных.Хранение логических операторов в полях кажется.,,необычный.

...