Ho la seguente tabella:Postgres collazione sul campo alias
CREATE TABLE public_bodies
("id" int, "name" varchar(46))
;
INSERT INTO public_bodies
("id", "name")
VALUES
(1, 'Ytre Helgeland District Psychiatric Centre'),
(2, 'Åfjord Municipality'),
(3, 'Østfold Hospital')
;
mi piacerebbe eseguire questa query:
SELECT public_bodies.id, public_bodies.name AS display_name
FROM public_bodies
ORDER BY display_name COLLATE "en_US";
Ma ottengo questo errore:
ERROR: column "display_name" does not exist
LINE 3: ORDER BY display_name COLLATE "en_US";
^
L'ordinamento in base al nome della tabella funziona correttamente:
SELECT public_bodies.id, public_bodies.name AS display_name
FROM public_bodies
ORDER BY public_bodies.name COLLATE "en_US";
-- id | display_name
-- ----+--------------------------------------------
-- 2 | Åfjord Municipality
-- 3 | Østfold Hospital
-- 1 | Ytre Helgeland District Psychiatric Centre
Ordinamento sul alias funziona troppo bene:
SELECT public_bodies.id, public_bodies.name AS display_name
FROM public_bodies
ORDER BY display_name;
-- id | display_name
-- ----+--------------------------------------------
-- 2 | Åfjord Municipality
-- 3 | Østfold Hospital
-- 1 | Ytre Helgeland District Psychiatric Centre
Applicando la COLLATE
prima di assegnare le opere alias, ma non capisco il motivo per cui questo è diverso per la fascicolazione dopo la ORDER_BY
. Versione
SELECT public_bodies.id, public_bodies.name COLLATE "en_US" AS display_name
FROM public_bodies
ORDER BY display_name;
-- id | display_name
-- ----+--------------------------------------------
-- 2 | Åfjord Municipality
-- 3 | Østfold Hospital
-- 1 | Ytre Helgeland District Psychiatric Centre
Postgres:
SELECT version();
version
-------------------------------------------------------------------------------------------------------------
PostgreSQL 9.1.12 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3, 64-bit
ho ottenere gli stessi risultati su SQL violino (Postgres 9.3).
Perché Postgres non può fascicolare sul campo con l'alias?
In Postgresql probabilmente non è possibile utilizzare un alias nella clausola dell'ordine in qualsiasi momento –
Appena aggiornata la domanda - l'ordinamento dell'alias senza collazione va bene. – ghr
Odora di insetto. L'hai provato nella versione attuale, 9.4.4? –