在 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
在 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
SQL 中有两种形式的 CASE 语句,在此处的 PostgreSQL 手册中进行了描述。
您正在使用的一个是将特定表达式与一系列值进行比较,例如switch
C 或 PHP 中的语句:
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
select case when 2+2 > 1 then this else that end