Detta beror på att da_DK.utf8
locale definierar det så här. Linux-lokalmedvetna verktyg, till exempel sort
kommer också att fungera så här.
Din convert_to(name, 'latin1')
kommer att gå sönder om den hittar ett tecken som inte är på latin 1 teckenuppsättning, till exempel €
, så det är ingen bra lösning.
Du kan använda order by convert_to(name, 'SQL_ASCII')
, som kommer att ignorera lokaldefinierad sortering och helt enkelt använda bytevärden.
Ugly hack edit:
order by
(
ascii(name) between ascii('a') and ascii('z')
or ascii(name) between ascii('A') and ascii('Z')
or ascii(name)>127
),
name;
Detta kommer först att sortera allt som börjar med ASCII icke-bokstav. Det här är väldigt fult, för att sortera längre i sträng skulle bete sig konstigt, men det kan vara tillräckligt bra för dig.