Tengo Postgres 9.4.4 ejecutándose en Debian y obtengo el siguiente ORDER BY
comportamiento:
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)
Y uname -a
:
Linux ---- 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1 x86_64 GNU/Linux
Sin embargo, en mi iMac, con Postgres 9.3.4, obtengo lo siguiente:
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)
Y el 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
Me desconcierta por qué la versión de Debian parece no distinguir entre mayúsculas y minúsculas y la versión de OS X no. ¿Qué me estoy perdiendo o qué otra información necesito proporcionar?
Actualización : en mi Mac, la pg_collation
tabla muestra que tengo una en_US.UTF-8
clasificación, pero en Debian, tengo una en_US.utf8
clasificación. Por lo tanto, en mi 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)
Y en 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)
Entonces, ¿ en_US.UTF-8
y en_US.utf8
tiene diferentes órdenes de clasificación?
select * from pg_collation
muestra el cuadro de Debian en_US.utf8
, mientras que el OS X sí en_US.UTF-8
. El uso de estos para forzar explícitamente la ordenación en los cuadros respectivos muestra diferentes órdenes de clasificación :(
'D d a A c b CD Capacitor'
Hay alguna posibilidad de que la cadena no se arroje como untext
campo en la Mac? IE, intentaSELECT regexp_split_to_table('D d a A c b CD Capacitor'::text, ' ') ORDER BY 1;
ver qué pasa ...