У меня есть база данных 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....
Префикс тире, похоже, игнорируется.
Я могу решить эту проблему, преобразовав столбец в латиницу1 при заказе:
select name from mytable order by convert_to(name, 'latin1') asc;
Ожидаемый результат получается следующим образом:
name
----------------
- Ak....
Ad...
Ae...
Ag...
At....
Почему префикс тире по умолчанию игнорируется?Можно ли изменить это поведение?