PostgreSQL CASE语句语法错误

时间:2012-08-01 02:40:30

标签: case postgresql-9.1

我正在尝试按照PostgreSQL手册中的说明操作。 PostgreSQL: Documentation: 9.1: Control Structures 我的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;

1 个答案:

答案 0 :(得分:4)

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

在此您看到,1,2不允许,只有普通expression。所以你可以写:

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