Důvodem je da_DK.utf8
locale to definuje tímto způsobem. Pomůcky pro místní nastavení Linuxu, například sort
bude také fungovat takto.
Váš convert_to(name, 'latin1')
přeruší, pokud najde znak, který není ve znakové sadě Latin 1, například €
, takže to není dobré řešení.
Můžete použít order by convert_to(name, 'SQL_ASCII')
, který bude ignorovat třídění definované národním prostředím a jednoduše použije bajtové hodnoty.
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;
Tím se nejprve seřadí vše, co začíná na ASCII bez písmene. To je velmi ošklivé, protože další řazení v řetězci by se chovalo divně, ale může vám to stačit.