2

我正在尝试按照 PostgreSQL 手册中的说明进行操作。 PostgreSQL:文档:9.1:控制结构 我的 PostgreSQL 服务器是 Windows 32 位上的 9.1.14 版。

以下 SQL 语句意外导致语法错误:

SELECT
  CASE 1
    WHEN 1,2 THEN 'x'
    ELSE 'y'
  END;

我期待它返回'x';

然而,更传统的代码运行良好:

SELECT
  CASE 1
    WHEN 1 THEN 'x'
    WHEN 2 THEN 'x'
    ELSE 'y'
  END;
4

1 回答 1

4

您正在使用CASE过程语言提供的语法plpgsql。这与SQL语法相似但不完全相同。这是 SQL 版本的链接。 CASECASE

在这里你看,这1,2是不允许的,只有一个普通的expression. 所以你可以写:

SELECT
  CASE 
    WHEN 1 in (1,2) THEN 'x'
    ELSE 'y'
  END;
于 2012-08-01T07:10:10.443 回答