Diese von der offiziellen Dokumentation (http://www.postgresql.org/docs/9.4/static/plpgsql-control-structures.html)PostgreSQL CASE-Anweisung
und zwei Formen von CASE:
CASE ... WHEN ... THEN ... ELSE ... END CASE
CASE WHEN ... THEN ... ELSE ... END CASE
Dies funktioniert nicht:
select case when 1 < 2 then 'a' else 'b' end case from pg_database limit 1;
Es arbeitet mit end
statt end case
, aber:
select case when 1 < 2 then 'a' else 'b' end from pg_database limit 1;
Dies ist mit PostgreSQL 9.4.6.
Warum stimmt die Syntax in der offiziellen Dokumentation nicht mit der Syntax überein, die der Server anscheinend benötigt?
Moderne SQL erlaubt Liste von Ausdruck in SQL 'CASE' auch. Die Prozedur 'CASE' basiert auf dem modernen Standard, SQL' CASE' ist immer noch ANSI SQL 99 konform (fehlende optionale Funktion F263). Der Grund, warum SQL 'CASE' dieses Feature vermisst, ist einfach - kein Body hat es für Postgres geschrieben. –
@PavelStehule: Oh, interessant, dies könnte für einen ambitionierten Entwickler ein wenig hängen bleiben. –