ऐसा इसलिए है क्योंकि da_DK.utf8
लोकेल इसे इस तरह परिभाषित करता है। लिनक्स लोकेल अवेयर यूटिलिटीज, उदाहरण के लिए sort
भी इसी तरह काम करेगा।
आपका convert_to(name, 'latin1')
टूट जाएगा यदि उसे ऐसा वर्ण मिलता है जो लैटिन 1 वर्ण सेट में नहीं है, उदाहरण के लिए €
, इसलिए यह एक अच्छा समाधान नहीं है।
आप order by convert_to(name, 'SQL_ASCII')
द्वारा ऑर्डर का उपयोग कर सकते हैं , जो लोकेल परिभाषित सॉर्ट को अनदेखा कर देगा और केवल बाइट मानों का उपयोग करेगा।
बदसूरत हैक संपादित करें:
order by
(
ascii(name) between ascii('a') and ascii('z')
or ascii(name) between ascii('A') and ascii('Z')
or ascii(name)>127
),
name;
यह पहले कुछ भी सॉर्ट करेगा जो ASCII गैर-अक्षर से शुरू होता है। यह बहुत बदसूरत है, क्योंकि स्ट्रिंग में आगे क्रमबद्ध करना अजीब व्यवहार करेगा, लेकिन यह आपके लिए काफी अच्छा हो सकता है।