Ошибка синтаксиса оператора PostgreSQL CASE
Я пытаюсь следовать инструкциям в руководстве PostgreSQL. PostgreSQL: Документация: 9.1: Структуры управления Мой сервер PostgreSQL является версией 9.1.14 для Windows 32-bit.
Следующая инструкция SQL неожиданно приводит к синтаксической ошибке:
SELECT
CASE 1
WHEN 1,2 THEN 'x'
ELSE 'y'
END;
Я ожидаю, что он вернет "х";
Однако более традиционный код работает нормально:
SELECT
CASE 1
WHEN 1 THEN 'x'
WHEN 2 THEN 'x'
ELSE 'y'
END;
1 ответ
Решение
Вы используете CASE
синтаксис, предусмотренный процедурным языком plpgsql
, Это похоже, но не идентично SQL CASE
синтаксис. Вот ссылка на версию SQL CASE
,
Здесь вы видите, что 1,2
не допускается, только простой expression
, Чтобы вы могли написать:
SELECT
CASE
WHEN 1 in (1,2) THEN 'x'
ELSE 'y'
END;