|
|
|
И какая же всетаки длинна VARCHAR2
|
|||
|---|---|---|---|
|
#18+
Кто однозначно может сказать какая длинна Varchar2 4000 32000 (с копейками) или не ограничена ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2004, 17:30 |
|
||
|
И какая же всетаки длинна VARCHAR2
|
|||
|---|---|---|---|
|
#18+
Esli sozdaesh pole v tablice - to 4000, a esli peremennaya - 32767. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2004, 17:47 |
|
||
|
И какая же всетаки длинна VARCHAR2
|
|||
|---|---|---|---|
|
#18+
при этом насколько я помню БАЙТ. В случае, если кодировка UTF8, длина в символах - меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2004, 17:50 |
|
||
|
И какая же всетаки длинна VARCHAR2
|
|||
|---|---|---|---|
|
#18+
Максимальная длина varchar-поля всегда 4000, и в байтах, и в символах: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2004, 18:00 |
|
||
|
И какая же всетаки длинна VARCHAR2
|
|||
|---|---|---|---|
|
#18+
Интересно все же в вопросе с UTF8 прийти к согласию. Честно скажу, с UTF8 я не игрался. Но в доке по 8.1.5 сказано: Oracle8i Application Developer's Guide - Fundamentals Release 8.1.5 A68003-01 4.Selecting a Datatype VARCHAR2 (size) Variable-length character data Variable for each row, up to 4000 bytes per row: Consider the character set (one-byte or multibyte) before setting size: A maximum size must be specified. и далее про NVARCHAR2 NVARCHAR2 (size) Variable-length character data of length size characters or bytes, depending on national character set: A maximum size must be specified Variable for each row. Column size is the number of characters for a fixed-width national character set or the number of bytes for a varying-width national character set. Maximum size is determined by the number of bytes required to store one character, with an upper limit of 4000 bytes per row. Default is 1 character or 1 byte, depending on the character set. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2004, 18:28 |
|
||
|
И какая же всетаки длинна VARCHAR2
|
|||
|---|---|---|---|
|
#18+
Тест с UTF8 ни очем не говорит. Символы в этой кодировке имеют переменную длину 1-2б. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 09:53 |
|
||
|
И какая же всетаки длинна VARCHAR2
|
|||
|---|---|---|---|
|
#18+
"В военное время значение синуса может достигать четырех":) Oracle9i Database Globalization Support Guide Supporting Multilingual Databases with Unicode What is Unicode? Unicode Encodings UTF-8 Encoding http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96529/ch5.htm#1004835 One Unicode character can be 1 byte, 2 bytes, 3 bytes, or 4 bytes in UTF-8 encoding. Причем в поле VARCHAR2(4000 char) "помещается" именно 4000 символа, е не байтов: Код: plaintext 1. 2. 'Ф' для UTF8 - это 2 байта: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Мне, правда, не совсем понятно, почему LENGTHB(LPAD('Ф', 4000, 'Ф')) показывает 4000. И что показывает поле USER_TAB_COLUMNS.DATA_LENGTH: Код: 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. Вот если длина поля заявляется в символах, то после VARCHAR2(1333 char) DATA_LENGTH принимает значение 4000. C NVARCHAR'ом я пока не работал, хотя, если не ошбаюсь, есть юникодные кодировки как и с фиксированной длиной символа, так и с плавающей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 10:57 |
|
||
|
И какая же всетаки длинна VARCHAR2
|
|||
|---|---|---|---|
|
#18+
В Oracle есть понятие "семантика длины символьных данных", может быть битовая семантика и символьная. Функция LENGTHB() возвращает длину строки в в еденицах выбранной семантики. Поэтому и получаем 4000, но прошу заметить это байты т.к. при создании таблицы по умолчанию используется битовая семантика для столбцов типа VARCHAR2 и VARCHAR. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 11:19 |
|
||
|
И какая же всетаки длинна VARCHAR2
|
|||
|---|---|---|---|
|
#18+
Хорошо, почему тогда получается следующее: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 11:37 |
|
||
|
И какая же всетаки длинна VARCHAR2
|
|||
|---|---|---|---|
|
#18+
Денис, с трудом верится что можно записать 4000 бухбайтных символов Если не трудно то begin for i in 1..5000 loop update test set v=v||'Ф'; end loop; end; / на чем слетит ЗЫ Как версия lpad работает побайтно, поробуйте для 'Ф' нечетное число (напр 3), что получим? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 11:59 |
|
||
|
И какая же всетаки длинна VARCHAR2
|
|||
|---|---|---|---|
|
#18+
в sql 4000 символов в plsql 32000 с чем то ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 12:05 |
|
||
|
И какая же всетаки длинна VARCHAR2
|
|||
|---|---|---|---|
|
#18+
Ух ты! Действительно выходит, что я ошибаюсь: Код: 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. Опять наткнулся на неявное обрезание строки. Но заметил так же, что если подобным же образом наращивать строку английскими символами, но проиходит то же самое, что и, собственно, ожидалось. Итого: 1. В поле таблицы не может быть записано VARCHAR-значение размером больше 4000 байт. 2. VARCHAR2(4000 char) следут читать не как "4000 символов", а "4000 байт с фиксированной длиной каждого символа". Остается только выяснить, почему в представлении USER_TAB_COLUMNS DATA_LENGTH = CHAR_LENGTH * 3, а не на 4, хотя вроде как в UTF8 существуют символы длиной в 4 байта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 12:20 |
|
||
|
И какая же всетаки длинна VARCHAR2
|
|||
|---|---|---|---|
|
#18+
Хотелось бы услышать мнения, почему так произошло с lpad-ом или это просто опечатка какаято? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 13:27 |
|
||
|
И какая же всетаки длинна VARCHAR2
|
|||
|---|---|---|---|
|
#18+
Тема старая, но не раскрыта полностью: Максимальная длина поля varchar2 = 4000 байт для SQL и 32767 для PLSQL Если используется многобайтная кодировка, то масимальное значение в символах расчитывается из сумм длинн в байтах каждого символа строки. Код: xml 1. Потому что lpad/rpad перменную varchar2 всегда обсчитывает в байтах, а nvarchar2 в символах Код: plsql 1. 2. Код: plaintext 1. 2. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Код: plsql 1. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2016, 17:49 |
|
||
|
И какая же всетаки длинна VARCHAR2
|
|||
|---|---|---|---|
|
#18+
savell, Специально зарегился чтоб написать эту ерунду? Уже пару лет как с выходом 12с ограничения изменились, но, вероятно, тебе понадобится еще 10 лет чтоб об этом написать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2016, 18:03 |
|
||
|
И какая же всетаки длинна VARCHAR2
|
|||
|---|---|---|---|
|
#18+
savellЕсли используется многобайтная кодировка, то масимальное значение в символах расчитывается из сумм длинн в байтах каждого символа строки.А если однобайтная, то по другому. Да и формулировочка корректнее звучала бы наоборот - кто на ком максимальный. Так что на полноту раскрытия опять не претендует. И неблагодарное это... Если кто-то не освоил документацию, то и поиск освоить ему будет влом, а, если и забредет на тему, еще шесть раз разжевывать придется. Семь раз разжуй... и выплюнь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2016, 18:05 |
|
||
|
И какая же всетаки длинна VARCHAR2
|
|||
|---|---|---|---|
|
#18+
savellПотому что lpad/rpad перменную varchar2 всегда обсчитывает в байтах, а nvarchar2 в символахНеверно. savellЕсли используется многобайтная кодировка Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2016, 18:10 |
|
||
|
И какая же всетаки длинна VARCHAR2
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, Зарегился специально, но не только для этого. Буду писать много подобного потому как в документации с первого-второго-третьего раза понять не всегда возможно. Все примеры-реальные на базе 12.1 с январским патчСетом и кодировкой Al32utf8 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2016, 18:31 |
|
||
|
И какая же всетаки длинна VARCHAR2
|
|||
|---|---|---|---|
|
#18+
savellБуду писать много подобного потому как в документации с первого-второго-третьего раза понять не всегда возможно.Значит будем ставить на место соответственно самоуверенному невежеству. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2016, 18:41 |
|
||
|
И какая же всетаки длинна VARCHAR2
|
|||
|---|---|---|---|
|
#18+
savellВсе примеры-реальные на базе 12.1 с январским патчСетом и кодировкой Al32utf8 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2016, 18:59 |
|
||
|
И какая же всетаки длинна VARCHAR2
|
|||
|---|---|---|---|
|
#18+
--Eugene--, Теперь я совсем запутался. Я залез в эту ветку, потому что мне надо было выгрузить строку с полями фиксированной ширины. И rpad с русскими буквами в поле varchar2 добавлял меньшее колтчество "заполнителей" пока я явно не преобразовал донные в nvarchar. Возможно, что это из-за nls_lang=cl8mswin1251? Завтра ещё поэкспериментирую. P.S. то, что я написал - это не Фэйк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2016, 19:16 |
|
||
|
И какая же всетаки длинна VARCHAR2
|
|||
|---|---|---|---|
|
#18+
savellвыгрузить строку с полями фиксированной шириныimho, приводить строки к единой длине правильнее было бы на клиенте, который "выгружает". то, что я написал - это не Фэйк.для правдоподобности приводи копипасты из sqlplus. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2016, 20:34 |
|
||
|
И какая же всетаки длинна VARCHAR2
|
|||
|---|---|---|---|
|
#18+
по сути длины в символах у varchar2 вообще нет. Даже если она указывается в символах, нет гарантии, что указанное число символов туда влезет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2016, 23:35 |
|
||
|
И какая же всетаки длинна VARCHAR2
|
|||
|---|---|---|---|
|
#18+
MasterZivпо сути длины в символах у varchar2 вообще нет. Даже если она указывается в символах, нет гарантии, что указанное число символов туда влезет. а не надо вблизи лимитов ошиваться - и будут вам гарантии ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2016, 10:32 |
|
||
|
И какая же всетаки длинна VARCHAR2
|
|||
|---|---|---|---|
|
#18+
--Eugene--, OFF TOPIC: касательно RPAD / LPAD на UTF-8 Oracle 12.1 На 11.2 у меня rpad тоже работает нормально, а вот на 12.1 - врёт Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2016, 13:17 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=145&tid=1885206]: |
0ms |
get settings: |
7ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
98ms |
get tp. blocked users: |
1ms |
| others: | 194ms |
| total: | 390ms |

| 0 / 0 |
