Ho Postgres 9.4.4 in esecuzione su Debian e ottengo il seguente ORDER BYcomportamento:
veure_test=# show LC_COLLATE;
lc_collate
-------------
en_US.UTF-8
(1 row)
veure_test=# SELECT regexp_split_to_table('D d a A c b CD Capacitor', ' ') ORDER BY 1;
regexp_split_to_table
-----------------------
a
A
b
c
Capacitor
CD
d
D
(8 rows)
E uname -a:
Linux ---- 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1 x86_64 GNU/Linux
Tuttavia, sul mio iMac, con Postgres 9.3.4, ottengo quanto segue:
veure_test=# show LC_COLLATE;
lc_collate
-------------
en_US.UTF-8
(1 row)
veure_test=# SELECT regexp_split_to_table('D d a A c b CD Capacitor', ' ') ORDER BY 1;
regexp_split_to_table
-----------------------
A
CD
Capacitor
D
a
b
c
d
(8 rows)
E il uname -a:
Darwin ---- 14.4.0 Darwin Kernel Version 14.4.0: Thu May 28 11:35:04 PDT 2015; root:xnu-2782.30.5~1/RELEASE_X86_64 x86_64
Sono sconcertato dal motivo per cui la versione di Debian non fa distinzione tra maiuscole e minuscole e la versione di OS X non lo è. Cosa mi manca o quali altre informazioni devo fornire?
Aggiornamento : sul mio Mac, la pg_collationtabella mostra che ho un en_US.UTF-8confronto, ma su Debian ho un en_US.utf8confronto. Quindi, sul mio Mac:
veure_test=# with foo as (
SELECT regexp_split_to_table('D d a A c b CD Capacitor', ' ') as bar
)
SELECT bar FROM foo
ORDER BY bar collate "en_US.UTF-8";
bar
-----------
A
CD
Capacitor
D
a
b
c
d
(8 rows)
E su Debian:
veure_test=# with foo as (
SELECT regexp_split_to_table('D d a A c b CD Capacitor', ' ') as bar
)
SELECT bar FROM foo
ORDER BY bar collate "en_US.utf8";
bar
-----------
a
A
b
c
Capacitor
CD
d
D
(8 rows)
Quindi en_US.UTF-8e en_US.utf8hai diversi ordinamenti?
select * from pg_collationmostra la scatola Debian en_US.utf8, mentre l'OS X ha en_US.UTF-8. L'uso di questi per forzare esplicitamente le regole di confronto nelle rispettive caselle mostra diversi ordinamenti :(
'D d a A c b CD Capacitor'non venga lanciata come untextcampo sul Mac? IE, prova aSELECT regexp_split_to_table('D d a A c b CD Capacitor'::text, ' ') ORDER BY 1;vedere cosa succede ...