powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Сортировка русских текстов
7 сообщений из 7, страница 1 из 1
Сортировка русских текстов
    #39209794
Pikarus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста, кто в курсе, в чем причина и как бороться.
Суть вопроса - неправильный учет пробелов при сортировке.
Пример:

create table test_fio (fio varchar(80));
insert into test_fio values ('Иванов Иван Иванович');
insert into test_fio values ('Иванова Ирина Ивановна');

select * from test_fio order by fio;
fio
------------------------
Иванова Ирина Ивановна
Иванов Иван Иванович

Почему-то буква 'а' (русская) выводится раньше пробела, хотя ascii('а') = 193, ascii(' ') = 32

Параметры конфигурации:
server_version = 8.4.221ts5
server_encoding = 'KOI8R'
client_encoding = 'KOI8R'
lc_collate = 'ru-RU.KOI8-R'
lc_ctype = 'ru-RU.KOI8-R'
...
Рейтинг: 0 / 0
Сортировка русских текстов
    #39209822
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pikarus,

Postgres полагается на средства операционки для работы с кодировками. Из-за этого имеется куча граблей — каждая ОСь ведёт себя по своему и при смене можно получить другой порядок для идентично сделанной базы и идентичных запросов.
Опять-таки, из-за багов в линуксовой glibc в 9.5.2 одну фичу тупо вырубили...

Если вы хотите полагаться на ASCII значения, то создавайте базы в кодировке SQL_ASCII, которая есть аналог C кодировки. Или же (для версий 9.1 и старше) явно указывайте кодировку:
Код: sql
1.
select * from test_fio order by fio COLLATE "C";


Только это отключит использование индексов, если кодировка последних не совпадает с указанной.
...
Рейтинг: 0 / 0
Сортировка русских текстов
    #39209853
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pikarus,

это ещё что, у этих рукожопов text::name сортируется в другом порядке , нежели исходный text. я об это как--то навернулся.


тяжелое наследие студенческой лабораторки Сдаунбрейкера. тут адвокатов этого дерьма -- как грязи, т.ч. не будем заострять.

"до чего довёл страну этот фигляр ПеЖе"(сс)
...
Рейтинг: 0 / 0
Сортировка русских текстов
    #39209855
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pikarus,

PS:
а уж почему в осях эбанутая сортировка -- это вопрос к писателям осей -- вот уж знатнее рукожопов история не знала.
...
Рейтинг: 0 / 0
Сортировка русских текстов
    #39209857
Pikarus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vyegorov,

понял, спасибо, стало быть в моем случае помочь ничем нельзя? в версии 8.4 в ORDER BY нельзя задать COLLATE,
да и в любом случае, не хотелось бы проблем с индексами.
Поднять версию до 9.5 тоже не могу - база корпоративная, не от меня зависит

Других способов борьбы с этой фичей нет?
...
Рейтинг: 0 / 0
Сортировка русских текстов
    #39209890
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pikarus,

Выкручиваться.

Postgres расширяем.

Никто не мешает сделать функцию на PL/pgSQL или другом процедурном языке, или даже на C, в которой возвращать какое-то значение, которое будет сортировать данные так, как вам нужно. Можно и свой тип определить с полным набором функций.

Но всё это нетривиально и требует времени.
Учитывая, что вы на 8.4, которая уже не поддерживается (и 9.0 тоже, да и 9.1 в этом году уйдёт), то правильней будет настаивать на апгрейде базы.
...
Рейтинг: 0 / 0
Сортировка русских текстов
    #39209938
Pikarus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vyegorov,

Спасибо, я понял, определять свое лениво, да и проблема не настолько серьезная
Будем пытаться пробить апгрейд
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Сортировка русских текстов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]