Имею простую таблицу в PostgreSQL 9.3.11:
create table sorttest
(
name varchar(64)
);
Добавляю три имени и делаю select с сортировкой по имени:
insert into sorttest values ('Aalto Oiva');
insert into sorttest values ('Aaltoo Leila');
insert into sorttest values ('Aalto Anna');
select * from sorttest order by name;
Результат ожидаемый.
test=> select * from sorttest order by name;
name
--------------
Aalto Anna
Aalto Oiva
Aaltoo Leila
(3 rows)
Меняю одну букву в имени второго человека. Пробую сортировать снова:
delete from sorttest;
insert into sorttest values ('Aalto Oiva');
insert into sorttest values ('Aaltom Leila');
insert into sorttest values ('Aalto Anna');
select * from sorttest order by name;
Что происходит, почему Aaltom Leila стала второй?
test=> select * from sorttest order by name;
name
--------------
Aalto Anna
Aaltom Leila
Aalto Oiva
(3 rows)
У меня нету к сожалению более новой версии. Mожет кто-нибудь объяснить в чем проблема или попробовать на более новой версии (может уже починили)?
Нашел причину проблемы, но
Нашел причину проблемы. Она совсем не в PostgreSQL, а в libc.
http://www.gnu.org/software/coreutils/faq/#Sort-does-not-sort-in-normal-...
Сортировка просто не учитывает пробелы между слов.
Принимаю любые советы, как исправить положение.