C'est parce que da_DK.utf8
locale le définit de cette façon. Utilitaires compatibles avec les paramètres régionaux Linux, par exemple sort
fonctionnera également comme ceci.
Votre convert_to(name, 'latin1')
se cassera s'il trouve un caractère qui n'est pas dans le jeu de caractères Latin 1, par exemple €
, ce n'est donc pas une bonne solution de contournement.
Vous pouvez utiliser order by convert_to(name, 'SQL_ASCII')
, qui ignorera le tri défini par les paramètres régionaux et utilisera simplement des valeurs d'octets.
Modification de piratage moche :
order by
(
ascii(name) between ascii('a') and ascii('z')
or ascii(name) between ascii('A') and ascii('Z')
or ascii(name)>127
),
name;
Cela triera d'abord tout ce qui commence par une non-lettre ASCII. C'est très moche, car trier plus loin dans la chaîne se comporterait étrangement, mais cela peut être assez bon pour vous.