2015-02-26 3 views
0

В MySQL можно выбрать логическое выражение, как это:Выбор булевы выражения

select (foo > bar and some = thing) as myFlag 
... 

Но в других диалектах SQL (в моем случае: Oracle PL/SQL и Hibernate HQL) не работает.

Единственный способ решения проблемы я нашел это:

select case when (foo > bar and some = thing) then true else false end as myFlag 
... 

который я нахожу довольно некрасиво.

Есть ли лучший способ написать такие выражения?

ответ

0

Лучше очень субъективный термин. Тем не менее, операторы CASE являются единственным способом, которым я знаю, чтобы привести этот тип логики в инструкцию Oracle SQL. Однако существует тип данных BOOLEAN в PL/SQL, поэтому, если это действительно то, что вы используете, это будет работать. Не нужно делать переключатель контекста, используя SQL в вашем блоке.

DECLARE 
    my_bool BOOLEAN; 
BEGIN 
    my_bool := 1 > 2; 
END; 
/
Смежные вопросы