在PostgreSQL中,这是一个有效的查询:
SELECT case 2+2 when 1 then 2 else 3 end
如果我放置一个复杂的子查询而不是'2 + 2',它仍然可以正常工作。但是,如果我想知道结果是更小而不是特定数字,我该如何更改此查询呢?
例如,这个不起作用:
SELECT case 2+2 when > 1 then 2 else 3 end
答案 0 :(得分:2)
SQL中有两种形式的CASE语句,described in the PostgreSQL manual here。
您正在使用的一个,将特定表达式与一系列值进行比较,例如C或PHP中的switch
语句:
CASE something WHEN 1 THEN 'hello' ELSE 'goodbye' END
另一个是更一般的分支条件集,如if-elseif-else
序列或PHP的switch(true)
。以上也可以这样写:
CASE WHEN something = 1 THEN 'hello' ELSE 'goodbye' END
因此,要使用=
以外的任何比较,您需要“if-like”版本。在您的示例中:
SELECT CASE WHEN 2+2 > 1 THEN 2 ELSE 3 END
答案 1 :(得分:0)
select case when 2+2 > 1 then this else that end