0

在 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
4

2 回答 2

2

SQL 中有两种形式的 CASE 语句,在此处的 PostgreSQL 手册中进行了描述

您正在使用的一个是将特定表达式与一系列值进行比较,例如switchC 或 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
于 2013-10-20T01:37:55.020 回答
0

select case when 2+2 > 1 then this else that end

于 2013-10-20T01:35:17.590 回答