powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Забавный глюк сортировки.
19 сообщений из 19, страница 1 из 1
Забавный глюк сортировки.
    #39697923
комит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
SELECT f1 FROM t1
ORDER BY f1



не сортирует как надо, выдает:
Код: sql
1.
2.
3.
4.
a.a
a.b
ax
a.c






Причем, посмотрел, ascii код у точек одинаковый.


Как так получается и как исправить?
...
Рейтинг: 0 / 0
Забавный глюк сортировки.
    #39697930
комит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
поле f1 имеет тип text
...
Рейтинг: 0 / 0
Забавный глюк сортировки.
    #39697937
комит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
--так норм
SELECT f1 FROM t1
ORDER BY substring(f1 from 1 for [SIZE=5]2[/SIZE])





Код: sql
1.
2.
3.
4.
a.a
a.b
a.c
ax





Код: sql
1.
2.
3.
---так не норм
SELECT f1 FROM t1
ORDER BY substring(f1 from 1 for [SIZE=5]3[/SIZE])






Код: sql
1.
2.
3.
4.
a.a
a.b
ax
a.c




Как так? о_О
...
Рейтинг: 0 / 0
Забавный глюк сортировки.
    #39697939
комит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
комит--так норм
SELECT f1 FROM t1
ORDER BY substring(f1 from 1 for 2)





Код: sql
1.
2.
3.
4.
a.a
a.b
a.c
ax






---так не норм
SELECT f1 FROM t1
ORDER BY substring(f1 from 1 for 3)






Код: sql
1.
2.
3.
4.
a.a
a.b
ax
a.c




Как так? о_О
...
Рейтинг: 0 / 0
Забавный глюк сортировки.
    #39697948
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
комит,

Версия PostgreSQL?
Какая ОС?
Какая кодировка в БД и клиенте: show server_encoding; show client_encoding; ?
Поместите эти 4 строки в файл и выполните в ОС: cat файл | sort
Как сортируется?
...
Рейтинг: 0 / 0
Забавный глюк сортировки.
    #39697976
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
комит,

ещё и так можно :

Код: sql
1.
ORDER BY f1::name
...
Рейтинг: 0 / 0
Забавный глюк сортировки.
    #39697978
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зы это плата за шапкозакидательный колхоз им. бартунова.

его скорее всего можно порешать, (вычислением неких табличек при установке пж, в зависимости от ос и системных сортировок) но никому не надо
...
Рейтинг: 0 / 0
Забавный глюк сортировки.
    #39698012
комит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Лузановкомит,

Версия PostgreSQL?
Какая ОС?
Какая кодировка в БД и клиенте: show server_encoding; show client_encoding; ?
Поместите эти 4 строки в файл и выполните в ОС: cat файл | sort
Как сортируется?


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

его скорее всего можно порешать, (вычислением неких табличек при установке пж, в зависимости от ос и системных сортировок) но никому не надо


Можете подробнее написать про колхоз?

Я ничего не понял, т.к. колхозы не застал.
...
Рейтинг: 0 / 0
Забавный глюк сортировки.
    #39698045
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
комит
Код: sql
1.
2.
SELECT f1 FROM t1
ORDER BY f1



не сортирует как надо, выдает:
Код: sql
1.
2.
3.
4.
a.a
a.b
ax
a.c






Причем, посмотрел, ascii код у точек одинаковый.


Как так получается и как исправить?

Сортируется системным sort по правилам описанным в СИСТЕМНЫХ локалях.
База вообще в сортировку не лезет кроме как указанием кодировки.
Надо смотреть какая кодировка базы используется и что показывается системный sort на теже строки при той же кодировке.

PS: x между b и с впрочем все равно очень странно. Или вы пример из головы привели а не реальный.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Забавный глюк сортировки.
    #39698123
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim BogukPS: x между b и с впрочем все равно очень странно. Или вы пример из головы привели а не реальный.
разве не между двумя точками?
...
Рейтинг: 0 / 0
Забавный глюк сортировки.
    #39698130
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухMaxim BogukPS: x между b и с впрочем все равно очень странно. Или вы пример из головы привели а не реальный.
разве не между двумя точками?

Некоторые локали игнорируют пробелы точки и прочие символы при сортировке. И правила сортировок в разных локалях очень разные и бывают очень неожиданные.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Забавный глюк сортировки.
    #39698186
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В качестве предположения.
Точки при сортировке игнорирует локаль, а вместо латинской "c" в данных русская.
...
Рейтинг: 0 / 0
Забавный глюк сортировки.
    #39698195
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел ЛузановВ качестве предположения.
Точки при сортировке игнорирует локаль, а вместо латинской "c" в данных русская.'

Тогда это специально придуманный набор данных чтобы озадачить читателей форума :).

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Забавный глюк сортировки.
    #39698235
комит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел ЛузановВ качестве предположения.
Точки при сортировке игнорирует локаль, а вместо латинской "c" в данных русская.


Символы там все латинские.
...
Рейтинг: 0 / 0
Забавный глюк сортировки.
    #39698429
Ы2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
комит, вы так и не указали версию postgres и ОС. На PostgreSQL 9.4 и 9.6 (обе на Linux) я не смог воспроизвести ваше достижение. Можно в виде эксперимента добавить collate "ru_RU" после order by, чтобы принудить базу сортировать «по-русски». Впрочем, у меня ни при каких значениях collate (пробовал en_US, en_GB, ru_RU, hu_HU, de_DE, pt_BR, es_MX и еще что-то) не получилось иного порядка кроме
aaLa.aLabLa.bLacLa.cLaxLa.xLa.бCa.сCa.хCабCахCахC
Как видно, последовательность «буква+точка+буква» всегда сортируется после «буква+буква» для латиницы и «буква+буква» после «буква+точка» для кириллицы(L и C тут для различения латинской ‘c’ и кириллической ‘с’).
...
Рейтинг: 0 / 0
Забавный глюк сортировки.
    #39698432
Ы2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поправка: L и C относятся ко всему, не только к ‘c’
...
Рейтинг: 0 / 0
Забавный глюк сортировки.
    #39698465
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim BogukPS: x между b и с впрочем все равно очень странно.
Ничего странного, это word sort, используемый в Windows по умолчанию.
...
Рейтинг: 0 / 0
Забавный глюк сортировки.
    #39698468
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНичего странного
А, нет, туплю. Действительно странно.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Забавный глюк сортировки.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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