Esto se debe a que da_DK.utf8
locale lo define de esta manera. Utilidades de configuración regional de Linux, por ejemplo sort
también funcionará así.
Tu convert_to(name, 'latin1')
se romperá si encuentra un carácter que no está en el juego de caracteres Latin 1, por ejemplo €
, por lo que no es una buena solución.
Puede usar order by convert_to(name, 'SQL_ASCII')
, que ignorará la ordenación definida por la configuración regional y simplemente usará valores de byte.
Edición de truco feo:
order by
(
ascii(name) between ascii('a') and ascii('z')
or ascii(name) between ascii('A') and ascii('Z')
or ascii(name)>127
),
name;
Esto ordenará primero cualquier cosa que comience con ASCII que no sea una letra. Esto es muy feo, porque ordenar más en la cadena se comportaría de forma extraña, pero puede ser lo suficientemente bueno para ti.