我正在尝试按照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;
答案 0 :(得分:4)
您正在使用过程语言CASE
提供的plpgsql
语法。这是类似的,但与 SQL CASE
语法不完全相同。以下是CASE
的SQL版本的链接。
在此您看到,1,2
不允许,只有普通expression
。所以你可以写:
SELECT
CASE
WHEN 1 in (1,2) THEN 'x'
ELSE 'y'
END;