powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / UKRAINIAN и Сортировка
45 сообщений из 45, показаны все 2 страниц
UKRAINIAN и Сортировка
    #40124995
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Насколько я понял, решения, без танцев з бубном, для сортировки Украинского алфавита и цифр в Oracle не существует или я не нашел решения?
Код: plsql
1.
nlssort(FieldName, 'NLS_SORT = UKRAINIAN')

Не работает - цифры в конце списка.
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125010
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ни разу не использовал NLSSORT, подсказать компетентно не смогу.

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

Нужен test case и ссылка на документацию , где описано поведение кода, и почему вы ожидаете другого поведения.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
Connected to Oracle Database 18c Express Edition Release 18.0.0.0.0 
Connected as user1@DBOFFICEXE

SQL> 
SQL> with t(s) as (
  2   select '1' from dual union all
  3   select '4' from dual union all
  4   select 'б' from dual union all
  5   select 'ё' from dual
  6  )
  7  select s from t order by nlssort(s, 'NLS_SORT = binary');

S
--
1
4
б
ё

SQL> 
SQL> with t(s) as (
  2   select '1' from dual union all
  3   select '4' from dual union all
  4   select 'б' from dual union all
  5   select 'ё' from dual
  6  )
  7  select s from t order by nlssort(s, 'NLS_SORT = russian');

S
--
б
ё
1
4

SQL> 

...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125016
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmdmdm,

тест кейс
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
WITH abc AS (
SELECT ' ' str FROM DUAL UNION ALL
SELECT '!' FROM DUAL UNION ALL
SELECT '1' FROM DUAL UNION ALL
SELECT 'D' FROM DUAL UNION ALL
SELECT 'd' FROM DUAL UNION ALL
SELECT 'А' FROM DUAL UNION ALL
SELECT 'а' FROM DUAL UNION ALL
SELECT 'І' FROM DUAL UNION ALL
SELECT 'і' FROM DUAL UNION ALL
SELECT 'Я' FROM DUAL UNION ALL
SELECT 'я' FROM DUAL)
SELECT
 str
FROM abc
ORDER BY str -- nlssort(str, 'NLS_SORT = UKRAINIAN')


Сортировка должна быть именно так как указано в "abc": Символы, Числа, Латинский алфавит, Украинский алфавит
Что имеется виду под ссылкой на документацию - не понял.
Другие СУБД, с которыми мне приходилось работать (MySql, MariaDb, MsSQL, MS Access, PostgreSQL), нормально справляються с этой задачей по умолчанию.
Скажу больше, они даже индексы могут использовать при сортировке, но не суть.
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125025
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По сути это сортировка как при nls_sort=binary только с учетом символов Украинского алфавита.
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125091
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сортировка должна быть

Что имеется виду под ссылкой на документацию - не понял.

Ссылка на документацию - пример у меня выше. И почему вы считаете, что _должно_ быть по-другому.

В вашем test case у меня на 18-й версии одинаковый результат при ORDER BY field и ORDER BY 'NLS_SORT = UKRAINIAN'. Вероятно, я плохо знаю этот диалект. Видимо, 'і' - это не английская буква, а украинская.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
Connected to Oracle Database 18c Express Edition Release 18.0.0.0.0 
Connected as user1@DBOFFICEXE

SQL> 
SQL> WITH abc AS (
  2  SELECT ' ' str FROM DUAL UNION ALL
  3  SELECT '!' FROM DUAL UNION ALL
  4  SELECT '1' FROM DUAL UNION ALL
  5  SELECT 'D' FROM DUAL UNION ALL
  6  SELECT 'd' FROM DUAL UNION ALL
  7  SELECT 'А' FROM DUAL UNION ALL
  8  SELECT 'а' FROM DUAL UNION ALL
  9  SELECT 'І' FROM DUAL UNION ALL
 10  SELECT 'і' FROM DUAL UNION ALL
 11  SELECT 'Я' FROM DUAL UNION ALL
 12  SELECT 'я' FROM DUAL)
 13  SELECT
 14   str
 15  FROM abc
 16  ORDER BY str -- nlssort(str, 'NLS_SORT = UKRAINIAN')
 17  ;

STR
---
!

D
d
А
а
І
і
Я
я
1

11 rows selected


SQL> WITH abc AS (
  2  SELECT ' ' str FROM DUAL UNION ALL
  3  SELECT '!' FROM DUAL UNION ALL
  4  SELECT '1' FROM DUAL UNION ALL
  5  SELECT 'D' FROM DUAL UNION ALL
  6  SELECT 'd' FROM DUAL UNION ALL
  7  SELECT 'А' FROM DUAL UNION ALL
  8  SELECT 'а' FROM DUAL UNION ALL
  9  SELECT 'І' FROM DUAL UNION ALL
 10  SELECT 'і' FROM DUAL UNION ALL
 11  SELECT 'Я' FROM DUAL UNION ALL
 12  SELECT 'я' FROM DUAL)
 13  SELECT
 14   str
 15  FROM abc
 16  ORDER BY nlssort(str, 'NLS_SORT = UKRAINIAN');

STR
---
!

D
d
А
а
І
і
Я
я
1

11 rows selected


SQL> 
SQL> WITH abc AS (
  2  SELECT ' ' str FROM DUAL UNION ALL
  3  SELECT '!' FROM DUAL UNION ALL
  4  SELECT '1' FROM DUAL UNION ALL
  5  SELECT 'D' FROM DUAL UNION ALL
  6  SELECT 'd' FROM DUAL UNION ALL
  7  SELECT 'А' FROM DUAL UNION ALL
  8  SELECT 'а' FROM DUAL UNION ALL
  9  SELECT 'І' FROM DUAL UNION ALL
 10  SELECT 'і' FROM DUAL UNION ALL
 11  SELECT 'Я' FROM DUAL UNION ALL
 12  SELECT 'я' FROM DUAL)
 13  SELECT
 14   str
 15  FROM abc
 16  ORDER BY nlssort(str, 'NLS_SORT = BINARY');

STR
---

!
1
D
d
І
А
Я
а
я
і

11 rows selected


SQL> 

...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125094
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmdmdm
Видимо, 'і' - это не английская буква, а украинская.
Именно так - Украинская.
Есть еще Її, Єє, Ґґ.
dmdmdm
И почему вы считаете, что _должно_ быть по-другому.
Потому, что так работают все другие программы, которые умеют сортировать текст. Потому что это логично, потому что это принято на всем постсоветском пространстве (думаю и большинстве стран мира), что сначала символы, потом цифры, потом буквы! Вот только Oracle - исключение. Он сортирует как ему хочется.
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125098
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergiiWПотому, что так работают все другие программы, которые умеют сортировать текст.

Ну так зачем жрать кактус? Получайте из оракула данные как есть и потом сортируйте их другими программами.
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125100
Maxim Demenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergiiW,

Я не совсем понял , вам нужен описанный порядок символов или описанный порядок символов при nls_sort=ukrainian ?
То что вы описываете очень похоже на multilingual сортировку
doc
testcase
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
SQL> alter session set nls_sort=ukrainian;

Session altered.

SQL> @ukr

PARAMETER                      VALUE
------------------------------ ------------------------------
NLS_SORT                       UKRAINIAN
NLS_COMP                       BINARY


STR   ASCII_STR
---- ----------
!            33
             32
D            68
d           100
А         53392
а         53424
І         53382
і         53654
Я         53423
я         53647
1            49

11 rows selected.

SQL> alter session set nls_sort=generic_m;

Session altered.

SQL> @ukr

PARAMETER                      VALUE
------------------------------ ------------------------------
NLS_SORT                       GENERIC_M
NLS_COMP                       BINARY


STR   ASCII_STR
---- ----------
             32
!            33
1            49
d           100
D            68
а         53424
А         53392
і         53654
І         53382
я         53647
Я         53423

11 rows selected.



Regards

Maxim
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125101
Фотография Кобанчег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergiiW
Потому, что так работают все другие программы, которые умеют сортировать текст. Потому что это логично, потому что это принято на всем постсоветском пространстве (думаю и большинстве стран мира), что сначала символы, потом цифры, потом буквы! Вот только Oracle - исключение. Он сортирует как ему хочется.
"все другие программы" сортируют как
Код: plsql
1.
nlssort(str, 'NLS_SORT = generic_m')


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
with abc(str) as
(select 'Ґ' from dual
 union all
 select 'ґ' from dual
 union all
 select 'Є' from dual
 union all
 select 'є' from dual
 union all
 select 'Б' from dual
 union all
 select 'б' from dual
 union all
 select '!' from dual
 union all
 select '0' from dual)
select str
from abc
order by nlssort(str, 'NLS_SORT = generic_m');


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
STR
---
!  
0  
б  
Б  
ґ  
Ґ  
є  
Є  

8 rows selected.

Если у тебя есть "более другая" программа - приведи пример.

Тебе же, насколько я понял, необходимо сохранить поведение как в binary. А именно чтоб заглавные буквы всегда шли перед строчными. В таком случае можно транслировать украинский алфавит в необходимый порядок.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
var target varchar2
exec select listagg('\10'||to_char(level,'fm00')) within group (order by level) into :target from dual connect by level <= 33*2;
with abc(str) as
(select 'Ґ' from dual
 union all
 select 'ґ' from dual
 union all
 select 'Є' from dual
 union all
 select 'є' from dual
 union all
 select 'Б' from dual
 union all
 select 'б' from dual
 union all
 select '!' from dual
 union all
 select '0' from dual)
select str
from abc
order by translate(str, 'АБВГҐДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЬЮЯабвгґдеєжзиіїйклмнопрстуфхцчшщьюя', unistr(:target));


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
STR
---
!  
0  
Б  
Ґ  
Є  
б  
ґ  
є  

8 rows selected.
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125115
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кобанчег,

Спасибо (дякую)! Про такую возможность не знал, но это и есть танцы з бубнами. :(
И без использования индексов.

Наверно, для многих случаев, меня устроит generic_m.
Ще раз дякую!
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125117
Фотография Кобанчег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergiiW
Про такую возможность не знал, но это и есть танцы з бубнами.
Покажи как ты получишь то же самое без танцев с бубном в других СУБД
SergiiW
Другие СУБД, с которыми мне приходилось работать (MySql, MariaDb, MsSQL, MS Access, PostgreSQL)
test-case

Здесь сортировка не такая как тебе необходио, не так ли?

Оракл даёт точно такой результат с помощью
Код: plsql
1.
2.
3.
select str
from abc
order by str collate generic_m;

Так что претензии к Ораклу не до конца ясны.
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125119
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кобанчег,

А не все так радужно как я думал Похоже снова грабли.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
WITH abc (str) AS (
SELECT '-' FROM DUAL UNION ALL
SELECT '1-а' FROM DUAL UNION ALL
SELECT '11' FROM DUAL UNION ALL
SELECT '1-' FROM DUAL UNION ALL
SELECT '1' FROM DUAL )
SELECT
 str
FROM abc
ORDER BY nlssort(str, 'NLS_SORT = generic_m')

Дает:
-
1
1-
11
1-а

Почему 11 идет раньше 1-а?
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125120
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну прочтите же, наконец, доку, смотреть больно на эти "эксперименты" ...
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125129
Фотография Кобанчег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergiiW
Почему 11 идет раньше 1-а?
Минуточку. Так что там в других СУБД и при чём здесь украинский?

collate "en_GB"
collate "en-GB-x-icu"
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125134
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergiiWПочему 11 идет раньше 1-а?

Потому что это "dictionary order" и он игнорирует знаки притыкания.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125150
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кобанчег,

Украинский тут точно не при чем. И второй пример сортирует правильно. MySql сортирует правильно по умолчанию. Как добиться такого в Oracle?
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125151
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
SergiiWПочему 11 идет раньше 1-а?

Потому что это "dictionary order" и он игнорирует знаки притыкания. Что такое знаки притыкания? Почему их нужно игнорировать? Как это исправить?
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125152
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все ответы тут:
Linguistic Sorting and Matching
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125154
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кобанчег
Покажи как ты получишь то же самое без танцев с бубном в других СУБД
Вот
Никаких танцев з бубнами. Все правильно по умолчанию.
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125159
Asmodeus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ORA21cORA18cMariaDB 10.6MySQL8PG14-----1-1-1-1-1-1-а1-а1-а1-а11111111111-аDDDDdddddDІІІАаАААаАЯЯЯІіаааіІяяяЯяіііяЯ"Правильным" объявлен MySQL, всем на него равняться?
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125164
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Asmodeus
"Правильным" объявлен MySQL, всем на него равняться?
Походу - да. :)
Как заставить правильно сортировать MariaDB, думаю, проблем нет - utf8_unicode_ci. Но не суть.
Итого. Сделать сортировку в порядке убывания Символи, Цифры, Латиница (Aa), Украинский алфавит (Aa) простым методом (без танцев с бубнами) не получиться? Наиболее близкое решение это использовать generic_m, но неверно (с моей точки зрения и моих пользователей ) сортирует при наличие "знаков притыкания" и сначала нижний регистр, потом верхний. Или я ошибаюсь и такую сортировку можно сделать?
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125167
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем, мого для себя нового узнал про сортировку. Ранее такими деталями даже не заморачивался.
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125168
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно сделать.
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125169
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможное решение для моего случая(!)
Код: sql
1.
ORDER BY CASE WHEN REGEXP_LIKE(str, '^(\d|\W)') then 1 END, nlssort(str, 'NLS_SORT = UKRAINIAN')


Пример
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125170
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous
Можно сделать.
Как? Сделать отдельную таблицу сортировки для oracle? У меня нет таких знаний.
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125172
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все необходимые знания есть по приведенной выше ссылке.
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125173
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Даже так будет лучше, еще правильно числа отсортирует
Код: sql
1.
ORDER BY CASE WHEN REGEXP_LIKE(str, '^\W') then 1 END, TO_NUMBER(REGEXP_SUBSTR(str, '^\d+')), nlssort(str, 'NLS_SORT = UKRAINIAN')


Пример
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125174
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous
Все необходимые знания есть по приведенной выше ссылке.

Скорее всего у меня недостаточно знаний чтобы это понять, а решение настолько сложное, что никто его даже привести не может.
Или остальные тоже не могут его понять?
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125175
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Вас есть три пути:
- Изучить имеющиеся штатные варианты сортировки (binary, Monolingual Collation, Multilingual Collation, UCA Collation) и скомпоновать строку с нужными модификаторами.
- Если из готовых кубиков конструктор не собирается - создать собственный collation посредством штатного Locale Builder
- Продолжать ныть по форумам и стучать себе в бубен translate-ом, regexp_replace-ом или любым другим инструментом, пытаясь приспособить их под свои нужды.

Выбор только за Вами.
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125176
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous,

Спасибо, попробую более детально погрузиться в проблему.
Но исходя из того, что такого решения нет ни на этом форуме, ни вообще в интернет - решение будет ой как не простое, если вообще будет.
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125178
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
У Вас есть три пути:
Выбор только за Вами.


И для начала понять что '11' это строка а не число и строки сравниваются слева направо (по-байтно или по-символьно взависимости от NLS_SORT). Посему '1-a' < '11' если '-' предшествует цифрам в данной collation.

SY.
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125179
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY
Посему '1-a' < '11' если '-' предшествует цифрам в данной collation.
До сегодняшнего дня я тоже был в этом уверен, но меня разуверили и даже привели примеры, что это не так - см. выше.
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125180
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergiiWНо исходя из того, что такого решения нет ни на этом форуме, ни вообще в интернет

А почему у меня в гугле второй строкой ссылка на
https://zukus.blogspot.com/2010/12/customizing-locale-data-nlssortukrumix.html ?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125181
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Это я читал еще до обращения на форум, но мне этот вариант не подходит - отказ (sysdba).
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125194
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergiiW
если вообще будет.

Ммм? Должно быть, я не очень внимательно читал, но чем не подходят те же
Код: plsql
1.
2.
UCA0700_ORADUCET_S3_VN_BN_NY_EN_FN_HN_DN_MN
UCA0700_ORADUCET_S4_VS_BN_NY_EN_FN_HN_DN_MN


или, если версия позволяет,
Код: plsql
1.
2.
UCA1210_ORADUCET_S3_VN_BN_NY_EN_FN_HN_DN_MN
UCA1210_ORADUCET_S4_VS_BN_NY_EN_FN_HN_DN_MN



...Вы тут про MySQL что-то говорили.
У них с лингвистической сортировкой всё то же самое, но со своими заморочками.
"по умолчанию" - смешно, да. А лингвистическая ли это была сортировка или binary? А если binary - то на каком именно characterset? Быть может, Ваши проблемы решаются аналогично - подбором подходящей кодировки БД и бинарной сортировкой?
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125203
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous
Ваши проблемы решаются аналогично - подбором подходящей кодировки БД и бинарной сортировкой?
Именно это я и хочу, но пока не могу найти того что нужно.
Я еще разбираюсь с этим. Предложенные варианты очень похожи на то, что нужно, но есть два небольших недостатка:
1. Сначала идет нижний регистр (а), потом верхний (А).
2. Сначала "11", потом "1-а".
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125204
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous
"по умолчанию" - смешно, да.
По умолчанию я имел ввиду использование необходимой кодировки. Для oracle я ожидал использование "UKRAINIAN".
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125214
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergiiWэтот вариант не подходит - отказ (sysdba).

Значит у Вас остаётся один вариант: получать от оракула несортированные данные и
потом сортировать их любым доступным и желаемым способом.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125217
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergiiW
SY
Посему '1-a' < '11' если '-' предшествует цифрам в данной collation.
До сегодняшнего дня я тоже был в этом уверен, но меня разуверили и даже привели примеры, что это не так - см. выше.


Ткни - не вижу. И еще раз, твое "Сортировка должна быть именно так как указано в "abc": Символы, Числа , Латинский алфавит, Украинский алфавит" вкупе с "Почему 11 идет раньше 1-а" показывает что ты не понимаешь сортировку строк. Ну нет чисел в строках - есть только символы цифр. Строки сортируются слева направо побайтно при BINARY SORT и посимвольно при LINGUISTIC SORT. Посему какая-бы ни была collation sequence строки '13', '25', '34', '47' всегда будут перед строкой '5'.

SY.
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125220
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

Я все понял, я смотрел кодировку UCA1210_ORADUCET_S4_VS_BN_NY_EN_FN_HN_DN_MN.
Для кодировки UCA1210_ORADUCET_S3_VN_BN_NY_EN_FN_HN_DN_MN замечания п.2 снимается.
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125221
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYСтроки сортируются слева направо побайтно при BINARY SORT и посимвольно при
LINGUISTIC SORT.

Если быть совсем точным и копать вглубь, то таки слева направо побайтно всегда
сравниваются ключи строк (то, что выдаёт NLSSORT), а вот как строка
преобразуется в этот ключ - и есть забота COLLATION. И таки да, если, например,
ICU указан атрибут numeric-sort, то "13" будет после "5".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125225
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем! Вроде разобрался (немного) с кодировками.
Мне подходит UCA1210_ORADUCET_S1_VN_BN_NY_EN_FN_HN_DN_MN
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40125229
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Похоже я так и не разобрался в сортировке.
При DESC уже сортирует неправильно Я и Є. :(
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40126101
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergiiW
Добрый день!
Насколько я понял, решения, без танцев з бубном, для сортировки Украинского алфавита и цифр в Oracle не существует или я не нашел решения?
Код: plsql
1.
nlssort(FieldName, 'NLS_SORT = UKRAINIAN')

Не работает - цифры в конце списка.

Поговорите с вашим руководителем.

Создается впечатление, что вы создали придуманную проблему на пустом месте
и теперь тратите на неё своё рабочее время и деньги вашей компании. :-(
...
Рейтинг: 0 / 0
UKRAINIAN и Сортировка
    #40126115
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*Plus

Создается впечатление, что вы создали придуманную проблему на пустом месте

Сильно зависит от гавбуха
у меня реально было, хочу вот так, ну и делал вот так

зы
но я очень рано нарвался


.....
stax
...
Рейтинг: 0 / 0
45 сообщений из 45, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / UKRAINIAN и Сортировка
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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