У меня есть база данных PostgreSQL 8.4, созданная с локалью da_DK.utf8.
dbname=> show lc_collate;
lc_collate
------------
da_DK.utf8
(1 row)
Когда я выбираю что-то из таблицы, где я заказываю столбец с переменным символом, я получаю странное поведение IMO. При упорядочивании результата PostgreSQL игнорирует дефисы перед значением, например:
select name from mytable order by name asc;
Может вернуть что-то вроде
name
----------------
Ad...
Ae...
Ag...
- Ak....
At....
Префикс тире, кажется, игнорируется.
Я могу исправить эту проблему, преобразовав столбец в latin1 при заказе:
select name from mytable order by convert_to(name, 'latin1') asc;
Я получаю ожидаемый результат как:
name
----------------
- Ak....
Ad...
Ae...
Ag...
At....
Почему префикс тире по умолчанию игнорируется? Можно ли изменить это поведение?