powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / вппрос по сортировке
13 сообщений из 13, страница 1 из 1
вппрос по сортировке
    #39294652
Познающий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот простой вопрос- КАК гарантировать при использовании order by сортировки данных
в последовательности: сперва цифры (и символы аля скобки, апострофы, кавычки, ...), потом буквы русского алфавита в регистронезависимом виде, но при этом позиция ё и й (и какие еще там странные буквы для оракла есть) - должна быть в соответствии с русским алфавитом, и только потом буквы латинского алфавита, тоже в регистронезависимом виде (это когда сперва маленькая буква, потом большая, кстати).

И как вариант расширения этого вида сортировки - всё тоже самое, только в регистрозависимом виде: сперва все маленькие буквы потом большие.

входные данные - мы не знаем на какой версии оракла этот код пойдет, есть выставленные NLS_SORT или нет, или еще чего-то нет.
Это неизвестно - должна только гарантированно выполняться сортировка, как описано.

Спасибо за содержательные ответы.
...
Рейтинг: 0 / 0
вппрос по сортировке
    #39294679
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Познающий,

TRANSLATE() ?
...
Рейтинг: 0 / 0
вппрос по сортировке
    #39294682
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Познающий,

рисовать свою ф-цию и order by My_sort(xxx)

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

creating a new linguistic sort
...
Рейтинг: 0 / 0
вппрос по сортировке
    #39294686
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--Познающий,

TRANSLATE() ?
TRANSLATE не поможет "не знаем есть выставленные NLS_SORT "

.....
stax
...
Рейтинг: 0 / 0
вппрос по сортировке
    #39294707
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..TRANSLATE не поможет "не знаем есть выставленные NLS_SORT "
stax

Что-то типа cортируем по:

1.TRANSLATE все цифры (и символы аля скобки, апострофы, кавычки, ...) в '1', все буквы русского алфавита в '2', все буквы латинского алфавита в '3'.
2. TRANSLATE всё кроме цифры (и символы аля скобки, апострофы, кавычки, ...) в пробел.
3. NLSSORT(TRANSLATE всё кроме буквы русского алфавита в пробел,'NLS_SORT = Russian')
4. NLSSORT(TRANSLATE всё кроме буквы латинского алфавита в пробел,'NLS_SORT = Latin')

SY.
...
Рейтинг: 0 / 0
вппрос по сортировке
    #39294758
Познающий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ндя, вроде бы простенькая задача, а превращается в ловлю слона в посудной лавке.
Я тут еще такой вариант надыбал:
Код: plsql
1.
2.
3.
4.
5.
order by
SIGN(INSTR('1234567890',UPPER(SUBSTR(fullname,1,1)))) DESC, 
SIGN(INSTR('АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ',UPPER(SUBSTR(fullname,1,1)))) DESC,
SIGN(INSTR('ABCDEFGHIJKLMNOPQRSTUVWXYZ',UPPER(SUBSTR(fullname,1,1)))) DESC,
fullname



вроде куда проще других предложенных.

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

Достаточно двух двухсимвольных строк чтоб доказать неработоспособность надыбанного.

Всегда пожалуйста.
...
Рейтинг: 0 / 0
вппрос по сортировке
    #39294975
Познающий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Глупый ТелевизорПознающий,

Достаточно двух двухсимвольных строк чтоб доказать неработоспособность надыбанного.

Всегда пожалуйста.

эммм, а можно реальный пример строк?
...
Рейтинг: 0 / 0
вппрос по сортировке
    #39294978
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПознающийГлупый ТелевизорПознающий,

Достаточно двух двухсимвольных строк чтоб доказать неработоспособность надыбанного.

Всегда пожалуйста.

эммм, а можно реальный пример строк?

сперва цифры

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
  1  with t as (
  2  select 'Ш1' fullname from dual union all
  3  select 'ШС' fullname from dual
  4  )
  5  select * from t
  6  order by
  7  SIGN(INSTR('1234567890',UPPER(SUBSTR(fullname,1,1)))) DESC,
  8  SIGN(INSTR('АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ',UPPER(SUBSTR(fullname,1,1)))) DESC,
  9  SIGN(INSTR('ABCDEFGHIJKLMNOPQRSTUVWXYZ',UPPER(SUBSTR(fullname,1,1)))) DESC,
 10* fullname
SQL> /

FU
--
ШС
Ш1



.....
stax
...
Рейтинг: 0 / 0
вппрос по сортировке
    #39295043
Познающий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
аааа,в этом плане. Мой use-case этого не требует. Все сравниваемые строки однородны.
там или буквы, или цифры.
НО для полного закрытия данного вопроса - для случаев строк с миксованным содержимым.
КАК, какой алгоритм сравнения в оракле нам поможет?
или проще написать либу на с++ и юзать экспортируемую ф-ию сравнения из неё?
чем, уважаемые коллеги, вы пользуетесь в продакшене?
...
Рейтинг: 0 / 0
вппрос по сортировке
    #39295060
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПознающийКАК, какой алгоритм сравнения в оракле нам поможет? 19564525
STFF Locale Builder
...
Рейтинг: 0 / 0
вппрос по сортировке
    #39295226
Познающий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
странно, но у меня нет этого билдера. оракл на линукс-сервере стоит. вроде полная установка....
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / вппрос по сортировке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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