Dzieje się tak, ponieważ da_DK.utf8
locale definiuje to w ten sposób. Narzędzia obsługujące lokalizacje Linux, na przykład sort
tak też będzie działać.
Twój convert_to(name, 'latin1')
zerwie się, jeśli znajdzie znak, który nie jest w zestawie znaków Latin 1, na przykład €
, więc nie jest to dobre obejście.
Możesz użyć order by convert_to(name, 'SQL_ASCII')
, który zignoruje sortowanie zdefiniowane lokalnie i po prostu użyje wartości bajtowych.
Brzydka edycja hackowania:
order by
(
ascii(name) between ascii('a') and ascii('z')
or ascii(name) between ascii('A') and ascii('Z')
or ascii(name)>127
),
name;
To posortuje najpierw wszystko, co zaczyna się od ASCII nieliterowego. Jest to bardzo brzydkie, ponieważ dalsze sortowanie w ciągach zachowywałoby się dziwnie, ale może być dla ciebie wystarczająco dobre.