|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
Добрый день! Насколько я понял, решения, без танцев з бубном, для сортировки Украинского алфавита и цифр в Oracle не существует или я не нашел решения? Код: plsql 1.
Не работает - цифры в конце списка. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2022, 18:19 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
Ни разу не использовал 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2022, 19:03 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
dmdmdm, тест кейс Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Сортировка должна быть именно так как указано в "abc": Символы, Числа, Латинский алфавит, Украинский алфавит Что имеется виду под ссылкой на документацию - не понял. Другие СУБД, с которыми мне приходилось работать (MySql, MariaDb, MsSQL, MS Access, PostgreSQL), нормально справляються с этой задачей по умолчанию. Скажу больше, они даже индексы могут использовать при сортировке, но не суть. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2022, 19:18 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
По сути это сортировка как при nls_sort=binary только с учетом символов Украинского алфавита. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2022, 19:50 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
Сортировка должна быть Что имеется виду под ссылкой на документацию - не понял. Ссылка на документацию - пример у меня выше. И почему вы считаете, что _должно_ быть по-другому. В вашем 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 12:40 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
dmdmdm Видимо, 'і' - это не английская буква, а украинская. Есть еще Її, Єє, Ґґ. dmdmdm И почему вы считаете, что _должно_ быть по-другому. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 13:15 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
SergiiWПотому, что так работают все другие программы, которые умеют сортировать текст. Ну так зачем жрать кактус? Получайте из оракула данные как есть и потом сортируйте их другими программами. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 13:48 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
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.
Regards Maxim ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 13:56 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
SergiiW Потому, что так работают все другие программы, которые умеют сортировать текст. Потому что это логично, потому что это принято на всем постсоветском пространстве (думаю и большинстве стран мира), что сначала символы, потом цифры, потом буквы! Вот только Oracle - исключение. Он сортирует как ему хочется. Код: plsql 1.
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Если у тебя есть "более другая" программа - приведи пример. Тебе же, насколько я понял, необходимо сохранить поведение как в binary. А именно чтоб заглавные буквы всегда шли перед строчными. В таком случае можно транслировать украинский алфавит в необходимый порядок. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 13:56 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
Кобанчег, Спасибо (дякую)! Про такую возможность не знал, но это и есть танцы з бубнами. :( И без использования индексов. Наверно, для многих случаев, меня устроит generic_m. Ще раз дякую! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 15:11 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
SergiiW Про такую возможность не знал, но это и есть танцы з бубнами. SergiiW Другие СУБД, с которыми мне приходилось работать (MySql, MariaDb, MsSQL, MS Access, PostgreSQL) Здесь сортировка не такая как тебе необходио, не так ли? Оракл даёт точно такой результат с помощью Код: plsql 1. 2. 3.
Так что претензии к Ораклу не до конца ясны. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 15:23 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
Кобанчег, А не все так радужно как я думал Похоже снова грабли. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Дает: - 1 1- 11 1-а Почему 11 идет раньше 1-а? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 15:39 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
Ну прочтите же, наконец, доку, смотреть больно на эти "эксперименты" ... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 15:52 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
SergiiW Почему 11 идет раньше 1-а? collate "en_GB" collate "en-GB-x-icu" ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 17:04 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
SergiiWПочему 11 идет раньше 1-а? Потому что это "dictionary order" и он игнорирует знаки притыкания. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 18:03 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
Кобанчег, Украинский тут точно не при чем. И второй пример сортирует правильно. MySql сортирует правильно по умолчанию. Как добиться такого в Oracle? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 20:36 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov SergiiWПочему 11 идет раньше 1-а? Потому что это "dictionary order" и он игнорирует знаки притыкания. Что такое знаки притыкания? Почему их нужно игнорировать? Как это исправить? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 20:45 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
Все ответы тут: Linguistic Sorting and Matching ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 20:48 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
Кобанчег Покажи как ты получишь то же самое без танцев с бубном в других СУБД Никаких танцев з бубнами. Все правильно по умолчанию. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 20:56 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
ORA21cORA18cMariaDB 10.6MySQL8PG14-----1-1-1-1-1-1-а1-а1-а1-а11111111111-аDDDDdddddDІІІАаАААаАЯЯЯІіаааіІяяяЯяіііяЯ"Правильным" объявлен MySQL, всем на него равняться? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 21:19 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
Asmodeus "Правильным" объявлен MySQL, всем на него равняться? Как заставить правильно сортировать MariaDB, думаю, проблем нет - utf8_unicode_ci. Но не суть. Итого. Сделать сортировку в порядке убывания Символи, Цифры, Латиница (Aa), Украинский алфавит (Aa) простым методом (без танцев с бубнами) не получиться? Наиболее близкое решение это использовать generic_m, но неверно (с моей точки зрения и моих пользователей ) сортирует при наличие "знаков притыкания" и сначала нижний регистр, потом верхний. Или я ошибаюсь и такую сортировку можно сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 21:45 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
Спасибо всем, мого для себя нового узнал про сортировку. Ранее такими деталями даже не заморачивался. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 22:00 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
Можно сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 22:04 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
Возможное решение для моего случая(!) Код: sql 1.
Пример ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 22:08 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
andrey_anonymous Можно сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 22:11 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
Все необходимые знания есть по приведенной выше ссылке. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 22:23 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
Даже так будет лучше, еще правильно числа отсортирует Код: sql 1.
Пример ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 22:30 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
andrey_anonymous Все необходимые знания есть по приведенной выше ссылке. Скорее всего у меня недостаточно знаний чтобы это понять, а решение настолько сложное, что никто его даже привести не может. Или остальные тоже не могут его понять? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 22:31 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
У Вас есть три пути: - Изучить имеющиеся штатные варианты сортировки (binary, Monolingual Collation, Multilingual Collation, UCA Collation) и скомпоновать строку с нужными модификаторами. - Если из готовых кубиков конструктор не собирается - создать собственный collation посредством штатного Locale Builder - Продолжать ныть по форумам и стучать себе в бубен translate-ом, regexp_replace-ом или любым другим инструментом, пытаясь приспособить их под свои нужды. Выбор только за Вами. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 22:46 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
andrey_anonymous, Спасибо, попробую более детально погрузиться в проблему. Но исходя из того, что такого решения нет ни на этом форуме, ни вообще в интернет - решение будет ой как не простое, если вообще будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 23:06 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
andrey_anonymous У Вас есть три пути: Выбор только за Вами. И для начала понять что '11' это строка а не число и строки сравниваются слева направо (по-байтно или по-символьно взависимости от NLS_SORT). Посему '1-a' < '11' если '-' предшествует цифрам в данной collation. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 23:25 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
SY Посему '1-a' < '11' если '-' предшествует цифрам в данной collation. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 23:30 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
SergiiWНо исходя из того, что такого решения нет ни на этом форуме, ни вообще в интернет А почему у меня в гугле второй строкой ссылка на https://zukus.blogspot.com/2010/12/customizing-locale-data-nlssortukrumix.html ?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 23:32 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Это я читал еще до обращения на форум, но мне этот вариант не подходит - отказ (sysdba). ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 23:44 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
SergiiW если вообще будет. Ммм? Должно быть, я не очень внимательно читал, но чем не подходят те же Код: plsql 1. 2.
или, если версия позволяет, Код: plsql 1. 2.
...Вы тут про MySQL что-то говорили. У них с лингвистической сортировкой всё то же самое, но со своими заморочками. "по умолчанию" - смешно, да. А лингвистическая ли это была сортировка или binary? А если binary - то на каком именно characterset? Быть может, Ваши проблемы решаются аналогично - подбором подходящей кодировки БД и бинарной сортировкой? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 02:48 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
andrey_anonymous Ваши проблемы решаются аналогично - подбором подходящей кодировки БД и бинарной сортировкой? Я еще разбираюсь с этим. Предложенные варианты очень похожи на то, что нужно, но есть два небольших недостатка: 1. Сначала идет нижний регистр (а), потом верхний (А). 2. Сначала "11", потом "1-а". ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 09:59 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
andrey_anonymous "по умолчанию" - смешно, да. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 10:03 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
SergiiWэтот вариант не подходит - отказ (sysdba). Значит у Вас остаётся один вариант: получать от оракула несортированные данные и потом сортировать их любым доступным и желаемым способом. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 13:47 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
SergiiW SY Посему '1-a' < '11' если '-' предшествует цифрам в данной collation. Ткни - не вижу. И еще раз, твое "Сортировка должна быть именно так как указано в "abc": Символы, Числа , Латинский алфавит, Украинский алфавит" вкупе с "Почему 11 идет раньше 1-а" показывает что ты не понимаешь сортировку строк. Ну нет чисел в строках - есть только символы цифр. Строки сортируются слева направо побайтно при BINARY SORT и посимвольно при LINGUISTIC SORT. Посему какая-бы ни была collation sequence строки '13', '25', '34', '47' всегда будут перед строкой '5'. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 14:46 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
SY, Я все понял, я смотрел кодировку UCA1210_ORADUCET_S4_VS_BN_NY_EN_FN_HN_DN_MN. Для кодировки UCA1210_ORADUCET_S3_VN_BN_NY_EN_FN_HN_DN_MN замечания п.2 снимается. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 15:11 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
SYСтроки сортируются слева направо побайтно при BINARY SORT и посимвольно при LINGUISTIC SORT. Если быть совсем точным и копать вглубь, то таки слева направо побайтно всегда сравниваются ключи строк (то, что выдаёт NLSSORT), а вот как строка преобразуется в этот ключ - и есть забота COLLATION. И таки да, если, например, ICU указан атрибут numeric-sort, то "13" будет после "5". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 15:13 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
Спасибо всем! Вроде разобрался (немного) с кодировками. Мне подходит UCA1210_ORADUCET_S1_VN_BN_NY_EN_FN_HN_DN_MN ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 15:35 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
Похоже я так и не разобрался в сортировке. При DESC уже сортирует неправильно Я и Є. :( ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 15:53 |
|
UKRAINIAN и Сортировка
|
|||
---|---|---|---|
#18+
SergiiW Добрый день! Насколько я понял, решения, без танцев з бубном, для сортировки Украинского алфавита и цифр в Oracle не существует или я не нашел решения? Код: plsql 1.
Не работает - цифры в конце списка. Поговорите с вашим руководителем. Создается впечатление, что вы создали придуманную проблему на пустом месте и теперь тратите на неё своё рабочее время и деньги вашей компании. :-( ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2022, 19:57 |
|
|
start [/forum/topic.php?all=1&fid=52&tid=1879609]: |
0ms |
get settings: |
24ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
825ms |
get tp. blocked users: |
2ms |
others: | 383ms |
total: | 1315ms |
0 / 0 |