Questo perché da_DK.utf8
locale lo definisce in questo modo. Programmi di utilità per la localizzazione di Linux, ad esempio sort
funzionerà anche così.
Il tuo convert_to(name, 'latin1')
si interromperà se trova un carattere che non è nel set di caratteri Latin 1, ad esempio €
, quindi non è una buona soluzione.
Puoi usare order by convert_to(name, 'SQL_ASCII')
, che ignorerà l'ordinamento definito dalla locale e utilizzerà semplicemente i valori dei byte.
Brutta modifica dell'hacking:
order by
(
ascii(name) between ascii('a') and ascii('z')
or ascii(name) between ascii('A') and ascii('Z')
or ascii(name)>127
),
name;
Questo ordinerà prima tutto ciò che inizia con ASCII non lettera. Questo è molto brutto, perché l'ordinamento ulteriormente nella stringa si comporterebbe in modo strano, ma può essere abbastanza buono per te.