मेरे पास Degr पर 9.4.4 Postgres हैं और मुझे निम्नलिखित ORDER BY
व्यवहार प्राप्त हैं:
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)
और uname -a
:
Linux ---- 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1 x86_64 GNU/Linux
हालाँकि, मेरे iMac पर, पोस्टग्रेज 9.3.4 के साथ, मुझे निम्नलिखित मिले:
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)
और 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
मैं इस बात से हैरान हूं कि डेबियन संस्करण केस-असंवेदनशील क्यों प्रतीत होता है और ओएस एक्स संस्करण नहीं है। मुझे क्या याद आ रहा है, या मुझे कौन सी अन्य जानकारी प्रदान करने की आवश्यकता है?
अपडेट : मेरे मैक पर, pg_collation
तालिका से पता चलता है कि मेरा एक en_US.UTF-8
टकराव है, लेकिन डेबियन पर, मेरा एक en_US.utf8
टकराव है। इस प्रकार, मेरे मैक पर:
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)
और डेबियन पर:
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)
तो en_US.UTF-8
और en_US.utf8
विभिन्न प्रकार के आदेश हैं?
select * from pg_collation
चलता है कि डेबियन बॉक्स में दिखाया गया है en_US.utf8
, जबकि ओएस एक्स में है en_US.UTF-8
। संबंधित बक्सों पर स्पष्ट रूप से बल टकराने का उपयोग करने से विभिन्न प्रकार के आदेश दिखाई देते हैं :(
'D d a A c b CD Capacitor'
कोtext
मैक पर एक क्षेत्र के रूप में नहीं डाला जा रहा है ? IE, कोशिश करोSELECT regexp_split_to_table('D d a A c b CD Capacitor'::text, ' ') ORDER BY 1;
और देखो क्या होता है ...