Това е така, защото da_DK.utf8
локал го дефинира по този начин. Помощни програми, съобразени с локала на Linux, например 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, което не е буква. Това е много грозно, защото сортирането по-нататък в низ би се държало странно, но може да е достатъчно добро за вас.