Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
order by и upper в DB2 for z/os по-русски
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. При работе с DB2 for z/os столкнулись со следующими двумя проблемами. Первая. 1. Создаём таблицу TEST со строкой VALUE, кодировку таблицы выбираем UNICODE (utf8). 2. Добавляем туда строки, содержащие русские буквы. 3. При вызове Код: plaintext Если же кодировку таблицы выбрать EBCDIC, сортировка вообще будет происходить по непонятному принципу. Вторая. 1. Создаём таблицу TEST со строкой VALUE, кодировку таблицы выбираем UNICODE (что впрочем роли не играет). 2. Наполняем таблицу различными строками вида "Заглавная". 3. При вызове Код: plaintext На DB2 для AIX всё работает правильно. С английскими буквами всё работает правильно. Подозреваю, что проблема может быть общая, поэтому размещаю в одном посте. Может быть, кто-то сталкивался с подобным или хотя бы понимает, куда нужно копнуть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2010, 00:08 |
|
||
|
order by и upper в DB2 for z/os по-русски
|
|||
|---|---|---|---|
|
#18+
нашла у себя старые заметки про сортировку, когда работала еще с SQL/DS, может пригодиться? Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2010, 11:13 |
|
||
|
order by и upper в DB2 for z/os по-русски
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Спасибо Вам за ответ. К сожалению, боюсь, что для нас такой способ будет не применим, так как мы используем ORM-слой (Hibernate) для работы с DB2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2010, 12:35 |
|
||
|
order by и upper в DB2 for z/os по-русски
|
|||
|---|---|---|---|
|
#18+
Восход, Какая у вас версия DB2 for z/OS ? Для версии 8 сортировка символьных данных производится "тупо" по байт-представлению для кодировки. Поэтому для ASCII и Unicode оно почти совпадает с алфавитом (кроме ё и Ё), а для EBCDIC - нет, т.к. в EBCDIC коды символов расположены не в алфавитном порядке. Однако UPPER и LOWER должны работать корректно. Что вернет такая выборка (имя таблицы и столбца нужно заменить своими) : Код: plaintext 1. Для версии 9 есть функция COLLATION_KEY . На практике ее не пробовал, и смогу попробовать не раньше понедельника. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2010, 13:40 |
|
||
|
order by и upper в DB2 for z/os по-русски
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Евгений Хабаров. Спасибо Вам за ответ. 1-й запрос возвращает пустую строку из 51 символа. 2-й запрос вида Код: plaintext Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. То есть - никакого эффекта. Версия DB2 - 9.1.5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2010, 15:06 |
|
||
|
order by и upper в DB2 for z/os по-русски
|
|||
|---|---|---|---|
|
#18+
Восход, для UTF должен работать COLLATION_KEY, для EBCDIC можно сгондобить вот такую вот FIELD PROC Поправить её только для русско-язычной кодировки. Вообще, это же не недостатки, а сплошные достониства. 1. Таблица кодировки лежит в таблице системного каталога. 2. Правила сортировки можно реализовать через FIELD PROC В результате, если завтра, к примеру, правительство наконец примет символ национальной валюты рубля, то все будут ждать, пока вендоры реализуют, а тут просто меняем таблицу кодировки, меняем правила сортировки, и всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2010, 16:04 |
|
||
|
order by и upper в DB2 for z/os по-русски
|
|||
|---|---|---|---|
|
#18+
странно, не могу файл присоединить... С исходным кодом процедурки... во зараза... ну не судьба значит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2010, 16:06 |
|
||
|
order by и upper в DB2 for z/os по-русски
|
|||
|---|---|---|---|
|
#18+
ага, получилось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2010, 16:07 |
|
||
|
order by и upper в DB2 for z/os по-русски
|
|||
|---|---|---|---|
|
#18+
Восход, Чтобы работал UPPER/LOWER регистр LC_CTYPE должен содержать правильную локаль. Локаль по умолчанию выставляется в модуле параметров DSNZPARM, параметр LC_CTYPE. Динамически значение параметра можно выставить так: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2010, 10:24 |
|
||
|
order by и upper в DB2 for z/os по-русски
|
|||
|---|---|---|---|
|
#18+
Евгений Хабаров, только букву 'ё' неправильно сортирует, ставит её в начале перед 'а' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2010, 15:04 |
|
||
|
order by и upper в DB2 for z/os по-русски
|
|||
|---|---|---|---|
|
#18+
ппм, Цитирую себя же : Евгений ХабаровДля версии 8 сортировка символьных данных производится "тупо" по байт-представлению для кодировки. Поэтому для ASCII и Unicode оно почти совпадает с алфавитом (кроме ё и Ё). То что "ё" и "Ё" в ASCII-кодировке идет перед "а" и "А" - это исторически сложившееся явление. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2010, 15:47 |
|
||
|
order by и upper в DB2 for z/os по-русски
|
|||
|---|---|---|---|
|
#18+
хм. у меня ёбсдик, а не ascii если я правильно помню ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2010, 21:58 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=36993851&tid=1602460]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 16ms |
| total: | 160ms |

| 0 / 0 |
