在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 :(得分:0)
更好是一个非常主观的术语。但是,CASE语句是我所知道的将此类逻辑引入Oracle SQL语句的唯一方法。但是,PL / SQL中有一个BOOLEAN数据类型,所以如果你真正使用它,那么下面的工作就可以了。无需在块中使用SQL进行上下文切换。
DECLARE
my_bool BOOLEAN;
BEGIN
my_bool := 1 > 2;
END;
/