Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Забавный глюк сортировки. / 19 сообщений из 19, страница 1 из 1
04.09.2018, 16:26
    #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
04.09.2018, 16:30
    #39697930
комит
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавный глюк сортировки.
поле f1 имеет тип text
...
Рейтинг: 0 / 0
04.09.2018, 16:33
    #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
04.09.2018, 16:33
    #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
04.09.2018, 16:53
    #39697948
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавный глюк сортировки.
комит,

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

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

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

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

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


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

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


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

Я ничего не понял, т.к. колхозы не застал.
...
Рейтинг: 0 / 0
04.09.2018, 19:03
    #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
04.09.2018, 23:51
    #39698123
полудух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавный глюк сортировки.
Maxim BogukPS: x между b и с впрочем все равно очень странно. Или вы пример из головы привели а не реальный.
разве не между двумя точками?
...
Рейтинг: 0 / 0
05.09.2018, 00:09
    #39698130
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавный глюк сортировки.
полудухMaxim BogukPS: x между b и с впрочем все равно очень странно. Или вы пример из головы привели а не реальный.
разве не между двумя точками?

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

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

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

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


Символы там все латинские.
...
Рейтинг: 0 / 0
05.09.2018, 13:25
    #39698429
Ы2
Ы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
05.09.2018, 13:26
    #39698432
Ы2
Ы2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавный глюк сортировки.
Поправка: L и C относятся ко всему, не только к ‘c’
...
Рейтинг: 0 / 0
05.09.2018, 13:48
    #39698465
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавный глюк сортировки.
Maxim BogukPS: x между b и с впрочем все равно очень странно.
Ничего странного, это word sort, используемый в Windows по умолчанию.
...
Рейтинг: 0 / 0
05.09.2018, 13:49
    #39698468
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забавный глюк сортировки.
Dimitry SibiryakovНичего странного
А, нет, туплю. Действительно странно.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Забавный глюк сортировки. / 19 сообщений из 19, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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