मैं cs_CZ (चेक) के लिए सेट मिलान के साथ एक मेज है:PostgreSQL अनुचित तरीके से चेक मिलान के साथ यूनिकोड वर्ण सॉर्ट करता
Name | Encoding | Collation | CType
-----------+----------+-------------+-------------
foo | UTF8 | cs_CZ.UTF-8 | cs_CZ.UTF-8
लेकिन जब मैं स्ट्रिंग द्वारा आदेश, परिणाम के रूप में यह चेक वर्णमाला के अनुसार किया जाना चाहिए पृथक नहीं किया जा रहा है :
=> SELECT surname FROM foo ORDER BY surname;
surname
-----------------
A
Da
Ďb
Dc
E
तो यह की तरह है, तो यूनिकोड लहजे चरित्र (घ) के बिना लहजे (डी) अपने ASCII संस्करण के लिए परिवर्तित कर दिया गया क्रमबद्ध किया जाता है। लेकिन चेक वर्णमाला है: ... सी -> डी -> Ď -> ई ..., इसलिए लौटाया गया आदेश गलत है (इस उदाहरण में यह होना चाहिए: ए -> दा -> डीसी -> Ďb -> ई)।
क्या यह सामान्य PostgreSQL व्यवहार है? क्या चेक तरीका वर्णमाला के अनुसार सही तरीके से सॉर्ट किया गया है?
संपादित करें: पोस्टग्रेज़ पर प्रयास किया 9.1.4, दोनों का एक ही व्यवहार है। यह एक आर्क लिनक्स मशीन है।
EDIT2: समायोजित उदाहरण, Ď वास्तविक समस्या है।
कृपया हमें बताएं कि आप किस पोस्टग्रेएसक्यूएल का उपयोग कर रहे हैं। –
बस मौका में, क्या आप PostgreSQL 9.1 या अधिक हालिया संस्करण पर होते हैं? यदि हां, तो आपके * foo * तालिका में * उपनाम * कॉलम एक अलग संयोजन पर सेट है? –
क्षमा करें, यह पोस्टग्रेज़ 9.1.4 है और यह 9.2.4 पर समान है। प्रश्न अपडेट किया गया। और नहीं, कोई स्तंभ-विशिष्ट संयोजन नहीं है। –