Dette er fordi da_DK.utf8 locale definerer det på denne måde. Linux-lokalitetsbevidste hjælpeprogrammer, for eksempel sort vil også fungere sådan her.
Din convert_to(name, 'latin1') vil bryde, hvis den finder et tegn, der ikke er på latin 1 tegnsæt, for eksempel € , så det er ikke en god løsning.
Du kan bruge order by convert_to(name, 'SQL_ASCII') , som vil ignorere lokalitetsdefineret sortering og blot bruge byteværdier.
Grimme 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;
Dette vil først sortere alt, der starter med ASCII ikke-bogstav. Det er meget grimt, for sortering længere i streng ville opføre sig mærkeligt, men det kan være godt nok for dig.