Ошибка синтаксиса оператора 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;
Другие вопросы по тегам