powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / переопределить сортировку
4 сообщений из 4, страница 1 из 1
переопределить сортировку
    #34927953
tadmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
8.2 кластер инициализирован ru_RU.CP1251
Сортировка по руссим строкам работает правильно, однако хотелось бы вначале отдавать русские [а-я] а затем уже латинские [a-z].
Сейчас сортирует наоборот - вначале латинские, затем русские .

Подозреваю, что для этого придется переделывать локаль в части LC_COLLATE.
Или есть средства попроще?
...
Рейтинг: 0 / 0
переопределить сортировку
    #34928272
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tadmin8.2 кластер инициализирован ru_RU.CP1251
Сортировка по руссим строкам работает правильно, однако хотелось бы вначале отдавать русские [а-я] а затем уже латинские [a-z].
Сейчас сортирует наоборот - вначале латинские, затем русские .

Подозреваю, что для этого придется переделывать локаль в части LC_COLLATE.
Или есть средства попроще?

Уйду в глухую ИМХу. Но может поможет.
Судя по коментам в форуме PG использует функцию сортировки ОС на которой работает. Отсюда все и проблемы и радости с сортировкой. Самый "простой" вариант - перехватить эту функцию на себя на уровне исходников, и пересобрать PG.
...
Рейтинг: 0 / 0
переопределить сортировку
    #34928351
tadmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, наверное можно и так, но мне стремно. Неумелец.
Я попробую разобраться, как локали устроены.
Типа сделать ru_RU.CP1251_my локаль с другой сортировкой, тогда никого пересобирать не придется.
...
Рейтинг: 0 / 0
переопределить сортировку
    #34930156
Shweik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделайте примерно так.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select
 case 
  when lastname ~*'[А..Я]+' then  1  
  when lastname ~*'[A..Z]+' then  2  
 end as ob ,
lastname
 from users; order by  ob;
--или
сreate function  f(lastname) returs int as $
-- тут  опять  таки както  определяем "условный вес" наших данных и

$
--юзаем эту ХП  как критерий сортировки.
select  lastname,firstname from  phonebook  order by f(lastname);
Блин... ну и вопросы.. - "детский сад вторая чевтерть"
Вообще читай Святую книгу Дональда Кнута скажем. Том 3 - переведен
отсканен и валяется по Сети. Методы Хоара тоже общеизвестны... а то не Постгрес изучаем
а "ОТА". Впрочем чего еще ждать от поклонников C# и прочей мути... в которой потерялись -
ПЕРВОИСТОЧНИКИ:
man qsort(3)
SEE ALSO
sort(1), radixsort(3)

Hoare, C.A.R., "Quicksort", The Computer Journal, 5:1, pp. 10-15, 1962.

Williams, J.W.J, "Heapsort", Communications of the ACM, 7:1, pp. 347-348,
1964.

Knuth, D.E., "Sorting and Searching", The Art of Computer Programming,
Vol. 3, pp. 114-123, 145-149, 1968.

McIlroy, P.M., "Optimistic Sorting and Information Theoretic Complexity",
Fourth Annual ACM-SIAM Symposium on Discrete Algorithms, January 1992.

Bentley, J.L. and McIlroy, M.D., "Engineering a Sort Function",
Software--Practice and Experience, Vol. 23(11), pp. 1249-1265,
November 1993.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / переопределить сортировку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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