powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / И какая же всетаки длинна VARCHAR2
53 сообщений из 53, показаны все 3 страниц
И какая же всетаки длинна VARCHAR2
    #32457419
oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто однозначно может сказать какая длинна Varchar2

4000 32000 (с копейками) или не ограничена
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #32457466
Фотография Serega128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Esli sozdaesh pole v tablice - to 4000, a esli peremennaya - 32767.
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #32457475
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при этом насколько я помню БАЙТ.
В случае, если кодировка UTF8, длина в символах - меньше.
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #32457493
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максимальная длина varchar-поля всегда 4000, и в байтах, и в символах:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
dan@sqlmast>; col name format a30
dan@sqlmast>; col value$ format a30
dan@sqlmast>; select name, value$ from sys.props$ where name = 'NLS_CHARACTERSET';

NAME                           VALUE$
 ------------------------------ ------------------------------
 
NLS_CHARACTERSET               UTF8

dan@sqlmast>; create table test (
   2       b varchar2( 4000  byte)
   3     , c varchar2( 4000  char)
   4   );

Table created.
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #32457552
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно все же в вопросе с 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.
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #32457962
nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тест с UTF8 ни очем не говорит.
Символы в этой кодировке имеют переменную длину 1-2б.
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #32458070
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"В военное время значение синуса может достигать четырех":)

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.
create table test (c varchar2( 4000  char));
insert into test(c) values (lpad('Ф',  4000 , 'Ф'));


'Ф' для UTF8 - это 2 байта:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
dan@sqlmast>; select length('Ф') l
   2        , lengthb('Ф') lb
   3        , lengthb(lpad('Ф',  4000 , 'Ф')) lbf
   4   from dual;

         L         LB        LBF
 ---------- ---------- ----------
 
          1            2         4000 


Мне, правда, не совсем понятно, почему 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.
dan@sqlmast>; create table test (
   2       b varchar2( 4000  byte)
   3     , c varchar2( 4000  char)
   4     , d varchar2( 1000  char)
   5     , e varchar2( 1333  char)
   6     , f varchar2( 2000  char)
   7   );                       

Table created.

dan@sqlmast>; col table_name format a10
dan@sqlmast>; col column_name format a15
dan@sqlmast>; col data_type format a15
dan@sqlmast>; col char_used format a10
dan@sqlmast>; select table_name, column_name, data_type
   2        , data_length, char_used, char_col_decl_length, char_length 
   3   from cols 
   4   where table_name = 'TEST';

TABLE_NAME COLUMN_NAME     DATA_TYPE       DATA_LENGTH CHAR_USED  CHAR_COL_DECL_LENGTH CHAR_LENGTH
 ---------- --------------- --------------- ----------- ---------- -------------------- -----------
 
TEST       B               VARCHAR2                4000  B                           4000          4000 
TEST       C               VARCHAR2                4000  C                           4000          4000 
TEST       D               VARCHAR2                3000  C                           3000          1000 
TEST       E               VARCHAR2                3999  C                           3999          1333 
TEST       F               VARCHAR2                4000  C                           4000          2000 


Вот если длина поля заявляется в символах, то после VARCHAR2(1333 char) DATA_LENGTH принимает значение 4000.

C NVARCHAR'ом я пока не работал, хотя, если не ошбаюсь, есть юникодные кодировки как и с фиксированной длиной символа, так и с плавающей?
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #32458135
max(id)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В Oracle есть понятие "семантика длины символьных данных", может быть битовая семантика и символьная. Функция LENGTHB() возвращает длину строки в в еденицах выбранной семантики. Поэтому и получаем 4000, но прошу заметить это байты т.к. при создании таблицы по умолчанию используется битовая семантика для столбцов типа VARCHAR2 и VARCHAR.
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #32458166
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо, почему тогда получается следующее:
Код: plaintext
1.
2.
3.
4.
5.
6.
dan@sqlmast>; select lengthb('Ф') lb, lengthb(lpad('Ф',  1 )) lbp from dual;

        LB        LBP
 ---------- ----------
 
          2            1 
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #32458201
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Денис, с трудом верится что можно записать
4000 бухбайтных символов

Если не трудно то
begin
for i in 1..5000 loop
update test set v=v||'Ф';
end loop;
end;
/
на чем слетит

ЗЫ
Как версия lpad работает побайтно,
поробуйте для 'Ф' нечетное число (напр 3),
что получим?
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #32458212
Simon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в sql 4000 символов
в plsql 32000 с чем то
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #32458253
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ух ты! Действительно выходит, что я ошибаюсь:

Код: 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.
dan@sqlmast>; create table test (
   2       c varchar2( 4000  char)
   3     , counter number( 5 )
   4   );

Table created.

dan@sqlmast>; begin
   2     delete test;
   3     insert into test (c, counter) values ('Ф',  1 );
   4     commit;
   5     for i in  1 .. 5000  loop
   6       update test set
   7           c = c||'Ф'
   8         , counter = counter +  1 ;
   9       commit;
  10     end loop;
  11   end;
  12   /
begin
*
ERROR at line  1 :
ORA- 01489 : result of string concatenation is too long
ORA- 06512 : at line  6 


dan@sqlmast>; select counter from test;

   COUNTER
 ----------
 
       2000 


Опять наткнулся на неявное обрезание строки. Но заметил так же, что если подобным же образом наращивать строку английскими символами, но проиходит то же самое, что и, собственно, ожидалось. Итого:

1. В поле таблицы не может быть записано VARCHAR-значение размером больше 4000 байт.
2. VARCHAR2(4000 char) следут читать не как "4000 символов", а "4000 байт с фиксированной длиной каждого символа". Остается только выяснить, почему в представлении USER_TAB_COLUMNS DATA_LENGTH = CHAR_LENGTH * 3, а не на 4, хотя вроде как в UTF8 существуют символы длиной в 4 байта.
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #32458441
max(id)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотелось бы услышать мнения, почему так произошло с lpad-ом или это просто опечатка какаято?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
И какая же всетаки длинна VARCHAR2
    #39174584
savell
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тема старая, но не раскрыта полностью:

Максимальная длина поля varchar2 = 4000 байт для SQL и 32767 для PLSQL
Если используется многобайтная кодировка, то масимальное значение в символах расчитывается из сумм длинн в байтах каждого символа строки.

Код: xml
1.
Мне, правда, не совсем понятно, почему LENGTHB(LPAD('Ф', 4000, 'Ф')) показывает 4000


Потому что lpad/rpad перменную varchar2 всегда обсчитывает в байтах, а nvarchar2 в символах

Код: plsql
1.
2.
select length(rpad('яяя',50,'-')) as aaa,length(rpad(n''||'яяя',50,'-')) as bbb,lengthb(rpad(n''||'яяя',50,'-')) as ccc,lengthb(rpad('яяя',50,'-')) as ddd
from dual


Код: plaintext
1.
2.
       AAA        BBB        CCC        DDD
---------- ---------- ---------- ----------
        47         50        100         50


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
create table t_test_varchar (counter number(5));
declare 
l varchar2(32676);
begin
    execute immediate 'truncate table t_test_varchar';
    insert into t_test_varchar values (0);
    for i in 1..32676 loop
    update t_test_varchar set counter=i;
    commit;
       if(i<10000) then l:=l||'F'; else  l:=l||'Ф'; end if;
    end loop;
end;
/
Error at line 1
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at line 9

select * from t_test_varchar
   COUNTER
----------
     21384



Код: plsql
1.
select length('Ф') l , lengthb('Ф') lb , length(lpad(cast('5' as varchar2(1) ), 100000000, '5')) lmax, lengthb(lpad(cast('5' as varchar2 (1) ), 100000000, 'Ф')) lmaxb , length(lpad(cast('Ф' as nvarchar2(1) ), 100000000, 'Ф')) lmaxN, lengthb(lpad(cast('Ф' as nvarchar2 (1) ), 100000000, 'Ф')) lmaxbN from dual;



Код: plaintext
1.
2.
         L         LB       LMAX      LMAXB      LMAXN     LMAXBN
---------- ---------- ---------- ---------- ---------- ----------
         1          2       4000       4000       2000       4000
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39174601
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
savell,

Специально зарегился чтоб написать эту ерунду?

Уже пару лет как с выходом 12с ограничения изменились, но, вероятно, тебе понадобится еще 10 лет чтоб об этом написать.
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39174605
savellЕсли используется многобайтная кодировка, то масимальное значение в символах расчитывается из сумм длинн в байтах каждого символа строки.А если однобайтная, то по другому. Да и формулировочка корректнее звучала бы наоборот - кто на ком максимальный. Так что на полноту раскрытия опять не претендует.
И неблагодарное это... Если кто-то не освоил документацию, то и поиск освоить ему будет влом, а, если и забредет на тему, еще шесть раз разжевывать придется. Семь раз разжуй... и выплюнь.
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39174611
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
savellПотому что lpad/rpad перменную varchar2 всегда обсчитывает в байтах, а nvarchar2 в символахНеверно.
savellЕсли используется многобайтная кодировка
Код: plaintext
1.
2.
       AAA        BBB        CCC        DDD
---------- ---------- ---------- ----------
        47         50        100         50
Фэйк.
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39174639
savell
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dbms_photoshop,
Зарегился специально, но не только для этого. Буду писать много подобного потому как в документации с первого-второго-третьего раза понять не всегда возможно.

Все примеры-реальные на базе 12.1 с январским патчСетом и кодировкой Al32utf8
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39174653
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
savellБуду писать много подобного потому как в документации с первого-второго-третьего раза понять не всегда возможно.Значит будем ставить на место соответственно самоуверенному невежеству.
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39174676
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
savellВсе примеры-реальные на базе 12.1 с январским патчСетом и кодировкой Al32utf8
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL> select VALUE from nls_database_parameters where parameter='NLS_CHARACTERSET';

VALUE
--------------------------------------------------------------------------------
AL32UTF8

SQL> select length(rpad('яяя',50,'-')) as aaa,length(rpad(n''||'яяя',50,'-')) as bbb,lengthb(rpad(n''||'яяя',50,'-')) as ccc,lengthb(rpad('яяя',50,'-')) as ddd
  2  from dual;

       AAA        BBB        CCC        DDD
---------- ---------- ---------- ----------
        50         50        100         53
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39174698
savell
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
--Eugene--,

Теперь я совсем запутался.
Я залез в эту ветку, потому что мне надо было выгрузить строку с полями фиксированной ширины. И rpad с русскими буквами в поле varchar2 добавлял меньшее колтчество "заполнителей" пока я явно не преобразовал донные в nvarchar.

Возможно, что это из-за nls_lang=cl8mswin1251? Завтра ещё поэкспериментирую.

P.S. то, что я написал - это не Фэйк.
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39174748
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
savellвыгрузить строку с полями фиксированной шириныimho, приводить строки к единой длине правильнее было бы на клиенте, который "выгружает".
то, что я написал - это не Фэйк.для правдоподобности приводи копипасты из sqlplus.
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39174832
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по сути длины в символах у varchar2 вообще нет.
Даже если она указывается в символах, нет гарантии, что указанное число символов туда влезет.
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39174999
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivпо сути длины в символах у varchar2 вообще нет.
Даже если она указывается в символах, нет гарантии, что указанное число символов туда влезет.
а не надо вблизи лимитов ошиваться - и будут вам гарантии
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39175235
savell
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
--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.
[oracle@xxxxx ~]$ export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
[oracle@xxxxx ~]$ env|grep LANG
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
LANG=en_US.UTF-8
[oracle@xxxxx ~]$ sqlplus "/as sysdba"

SQL*Plus: Release 11.2.0.4.0 Production on Fri Feb 19 13:04:22 2016

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select VALUE from nls_database_parameters where parameter='NLS_CHARACTERSET'
union select VALUE from nls_session_parameters where parameter='NLS_LENGTH_SEMANTICS' ;

VALUE
--------------------------------------------------------------------------------
AL32UTF8
CHAR

SQL> SET LINESIZE 32000;
SQL> select lengthc(rpad('я',5,'-')) as aaa
,lengthc(rpad(convert(chr(223),'AL32UTF8','CL8MSWIN1251'),5,'-')) as bbb
,lengthc(rpad(n''||convert(chr(223),'AL32UTF8','CL8MSWIN1251'),5,'-')) as ccc
,dump('я'),dump(rpad('я',5,'-'))
,dump(convert(chr(255),'AL32UTF8','CL8MSWIN1251')) as dump_fromChar
,dump(rpad(convert(chr(255),'AL32UTF8','CL8MSWIN1251'),5,'-')) as dump_RPadfromChar from dual;

       AAA        BBB        CCC DUMP('Я')                  DUMP(RPAD('Я',5,'-'))                 DUMP_FROMCHAR          DUMP_RPADFROMCHAR
---------- ---------- ---------- -------------------------- ------------------------------------- ---------------------- ----------------------------------------
         5          5          5 Typ=96 Len=2: 209,143      Typ=1 Len=6: 209,143,45,45,45,45      Typ=1 Len=2: 209,143   Typ=1 Len=6: 209,143,45,45,45,45

SQL> Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@xxxxx ~]$ . /etc/profile
[oracle@xxxxx ~]$ env|grep LANG
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
LANG=en_US.UTF-8
[oracle@xxxxx ~]$ sqlplus "/as sysdba"

SQL*Plus: Release 12.1.0.2.0 Production on Fri Feb 19 13:06:00 2016

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> select VALUE from nls_database_parameters where parameter='NLS_CHARACTERSET' union select VALUE from nls_session_parameters where parameter='NLS_LENGTH_SEMANTICS' ;

VALUE
--------------------------------------------------------------------------------
AL32UTF8
CHAR


SQL> SET LINESIZE 32000;
SQL> select lengthc(rpad('я',5,'-')) as aaa
,lengthc(rpad(convert(chr(223),'AL32UTF8','CL8MSWIN1251'),5,'-')) as bbb
,lengthc(rpad(n''||convert(chr(223),'AL32UTF8','CL8MSWIN1251'),5,'-')) as ccc
,dump('я')
,dump(rpad('я',5,'-'))
,dump(convert(chr(255),'AL32UTF8','CL8MSWIN1251')) as dump_fromChar
,dump(rpad(convert(chr(255),'AL32UTF8','CL8MSWIN1251'),5,'-')) as dump_RPadfromChar from dual;

       AAA        BBB        CCC DUMP('Я')                 DUMP(RPAD('Я',5,'-'))          DUMP_FROMCHAR            DUMP_RPADFROMCHAR
---------- ---------- ---------- ------------------------- ------------------------------ ------------------------ ----------------------------------
         4          4          5 Typ=96 Len=2: 209,143     Typ=1 Len=5: 209,143,45,45,45  Typ=1 Len=2: 209,143     Typ=1 Len=5: 209,143,45,45,45

SQL>
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39175250
utl_i18n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
savell,

lengthc применима специфично к ucs, который отнюдь не utf-8, который ты ему передаешь. чем тебя не устраивает length без суффиксов? convert вообще корявая функция, забудь про нее навсегда.
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39175280
savell
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
utl_i18nsavell,

lengthc применима специфично к ucs, который отнюдь не utf-8, который ты ему передаешь. чем тебя не устраивает length без суффиксов? convert вообще корявая функция, забудь про нее навсегда.

Length() ведёт себя точно также, собственно в дампе видно истинную длину получившегося выражения. Суть в том, что lpad некорректно возваращает строку: у меня кодировка везде UTF-8, в доке написано что The total length of the return value as it is displayed on your terminal screen. In most character sets, this is also the number of characters in the return value. However, in some multibyte character sets, the display length of a character string can differ from the number of characters in the string.

Я хочу на терминале увидеть поле длиной 5 символов, а он мне возвращает меньше, 5 байт.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
[oracle@xxxxx ~]$ env|grep LANG
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
LANG=en_US.UTF-8
[oracle@xxxxx ~]$ sqlplus "/as sysdba"
$ sqlplus "/as sysdba"

SQL*Plus: Release 12.1.0.2.0 Production on Fri Feb 19 13:46:23 2016

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> select rpad('яя',5,'=') as aaa,rpad(n''||'яя',5,'=') as ccc from dual;

AAA          CCC
------------ --------------------
яя=          яя===
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
И какая же всетаки длинна VARCHAR2
    #39525972
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
savellЯ хочу на терминале увидеть поле длиной 5 символов, а он мне возвращает меньше, 5 байт.Я и нарвался на эту неприятную особенность.
Код: 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.
column parameter format a30
column value     format a30

select *
from nls_database_parameters
where parameter in ('NLS_RDBMS_VERSION', 'NLS_LENGTH_SEMANTICS', 'NLS_CHARACTERSET');

PARAMETER                      VALUE
------------------------------ ------------------------------
NLS_RDBMS_VERSION              12.1.0.2.0
NLS_LENGTH_SEMANTICS           BYTE
NLS_CHARACTERSET               AL32UTF8


show parameter max_string_size;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
max_string_size                      string      STANDARD

column name      format a15
column rpad_name format a25

with s (name) as
(select 'Привет'       from dual union all
 select 'Привет мир'   from dual union all
 select 'Hello'        from dual union all
 select 'Hello world'  from dual
)
select t.*, length(rpad_name) rpad_name_len, lengthb(rpad_name) rpad_name_lenb
from
   (select name, length(name) len, rpad(name, 20, '+') rpad_name
    from s
   ) t;

NAME                   LEN RPAD_NAME                 RPAD_NAME_LEN RPAD_NAME_LENB
--------------- ---------- ------------------------- ------------- --------------
Привет                   6 Привет++++++++                       14             20
Привет мир              10 Привет мир+                          11             20
Hello                    5 Hello+++++++++++++++                 20             20
Hello world             11 Hello world+++++++++                 20             20
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39525993
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad
Код: plsql
1.
where parameter in ('NLS_RDBMS_VERSION', 'NLS_LENGTH_SEMANTICS', 'NLS_CHARACTERSET');

А остальные? И *session*?
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39525998
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

Завтра доберусь до станка, скину.
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39526140
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

NLS Params
Код: 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.
column parameter format a30
column value     format a30

select * from nls_database_parameters;

PARAMETER                      VALUE
------------------------------ ------------------------------
NLS_RDBMS_VERSION              12.1.0.2.0
NLS_NCHAR_CONV_EXCP            FALSE
NLS_LENGTH_SEMANTICS           BYTE
NLS_COMP                       BINARY
NLS_DUAL_CURRENCY              $
NLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXFF AM TZR
NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_FORMAT                HH.MI.SSXFF AM
NLS_SORT                       BINARY
NLS_DATE_LANGUAGE              AMERICAN
NLS_DATE_FORMAT                DD-MON-RR
NLS_CALENDAR                   GREGORIAN
NLS_NUMERIC_CHARACTERS         .,
NLS_NCHAR_CHARACTERSET         AL16UTF16
NLS_CHARACTERSET               AL32UTF8
NLS_ISO_CURRENCY               AMERICA
NLS_CURRENCY                   $
NLS_TERRITORY                  AMERICA
NLS_LANGUAGE                   AMERICAN

20 строк выбрано.


select * from nls_session_parameters;

PARAMETER                      VALUE
------------------------------ ------------------------------
NLS_LANGUAGE                   RUSSIAN
NLS_TERRITORY                  RUSSIA
NLS_CURRENCY                   р.
NLS_ISO_CURRENCY               RUSSIA
NLS_NUMERIC_CHARACTERS         ,
NLS_CALENDAR                   GREGORIAN
NLS_DATE_FORMAT                yyyy-mm-dd hh24:mi:ss
NLS_DATE_LANGUAGE              RUSSIAN
NLS_SORT                       RUSSIAN
NLS_TIME_FORMAT                HH24:MI:SSXFF
NLS_TIMESTAMP_FORMAT           DD.MM.RR HH24:MI:SSXFF
NLS_TIME_TZ_FORMAT             HH24:MI:SSXFF TZR
NLS_TIMESTAMP_TZ_FORMAT        DD.MM.RR HH24:MI:SSXFF TZR
NLS_DUAL_CURRENCY              р.
NLS_COMP                       BINARY
NLS_LENGTH_SEMANTICS           BYTE
NLS_NCHAR_CONV_EXCP            FALSE

17 строк выбрано.

...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39526145
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad
Код: plsql
1.
NLS_LENGTH_SEMANTICS           BYTE

А если CHAR?
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39526152
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

Без изменений
Код: 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.
column parameter format a30
column value     format a30

alter session set nls_length_semantics = char;

Сеанс изменен.


select *
from nls_session_parameters
where parameter = 'NLS_LENGTH_SEMANTICS';

PARAMETER                      VALUE
------------------------------ ------------------------------
NLS_LENGTH_SEMANTICS           CHAR


with s (name) as
(select 'Привет'       from dual union all
 select 'Привет мир'   from dual union all
 select 'Hello'        from dual union all
 select 'Hello world'  from dual
)
select t.*, length(rpad_name) rpad_name_len, lengthb(rpad_name) rpad_name_lenb
from
   (select name, length(name) len, rpad(name, 20, '+') rpad_name
    from s
   ) t;

NAME               LEN RPAD_NAME            RPAD_NAME_LEN RPAD_NAME_LENB
----------- ---------- -------------------- ------------- --------------
Привет               6 Привет++++++++                  14             20
Привет мир          10 Привет мир+                     11             20
Hello                5 Hello+++++++++++++++            20             20
Hello world         11 Hello world+++++++++            20             20
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39526224
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad,

Код: plsql
1.
select * from nls_database_parameters;



Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
PARAMETER	VALUE
NLS_RDBMS_VERSION	12.2.0.1.0
NLS_NCHAR_CONV_EXCP	FALSE
NLS_LENGTH_SEMANTICS	BYTE
NLS_COMP	BINARY
NLS_DUAL_CURRENCY	$
NLS_TIMESTAMP_TZ_FORMAT	DD-MON-RR HH.MI.SSXFF AM TZR
NLS_TIME_TZ_FORMAT	HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_FORMAT	DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_FORMAT	HH.MI.SSXFF AM
NLS_SORT	BINARY
NLS_DATE_LANGUAGE	AMERICAN
NLS_DATE_FORMAT	DD-MON-RR
NLS_CALENDAR	GREGORIAN
NLS_NUMERIC_CHARACTERS	.,
NLS_NCHAR_CHARACTERSET	AL16UTF16
NLS_CHARACTERSET	AL32UTF8
NLS_ISO_CURRENCY	AMERICA
NLS_CURRENCY	$
NLS_TERRITORY	AMERICA
NLS_LANGUAGE	AMERICAN



Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
with s (name) as
(select 'Привет'       from dual union all
 select 'Привет мир'   from dual union all
 select 'Hello'        from dual union all
 select 'Hello world'  from dual
)
select t.*, length(rpad_name) rpad_name_len, lengthb(rpad_name) rpad_name_lenb
from
   (select name, length(name) len, rpad(name, 20, '+') rpad_name
    from s
   ) t;



Код: plsql
1.
2.
3.
4.
5.
NAME	LEN	RPAD_NAME	RPAD_NAME_LEN	RPAD_NAME_LENB
Привет           6	Привет++++++++++++++	20	26
Привет мир	10	Привет мир++++++++++	20	29
Hello	         5	Hello+++++++++++++++	20	20
Hello world	11	Hello world+++++++++	20	20

...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39526234
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из того, что бросается в глаза - разница в версии. Видать, пофиксили уже.
MaximaXXL
Код: plsql
1.
NLS_RDBMS_VERSION	12.2.0.1.0
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39526235
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad,

Код: plsql
1.
select * from nls_session_parameters;



Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
PARAMETER	        VALUE
NLS_LANGUAGE   	        AMERICAN
NLS_TERRITORY	        AMERICA
NLS_CURRENCY	        $
NLS_ISO_CURRENCY	AMERICA
NLS_NUMERIC_CHARACTERS	.,
NLS_CALENDAR	        GREGORIAN
NLS_DATE_FORMAT  	DD-MON-RR
NLS_DATE_LANGUAGE	AMERICAN
NLS_SORT	        BINARY
NLS_TIME_FORMAT	        HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT	DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT	HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT	DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY	$
NLS_COMP	        BINARY
NLS_LENGTH_SEMANTICS	BYTE
NLS_NCHAR_CONV_EXCP	FALSE
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39526239
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKadБез измененийСмахивает на баг именно в 12.1. На 11.2 и 12.2 всё работает ожидаемо.
Код: 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.
Elic@ELIC122UTF8>; with s (name) as
Elic@ELIC122UTF8>; (select 'Привет'       from dual union all
Elic@ELIC122UTF8>;  select 'Привет мир'   from dual union all
Elic@ELIC122UTF8>;  select 'Hello'        from dual union all
Elic@ELIC122UTF8>;  select 'Hello world'  from dual
Elic@ELIC122UTF8>; )
Elic@ELIC122UTF8>; select t.*, length(rpad_name) rpad_name_len, lengthb(rpad_name) rpad_name_lenb
Elic@ELIC122UTF8>; from
Elic@ELIC122UTF8>;    (select name, length(name) len, rpad(name, 20, '+') rpad_name
Elic@ELIC122UTF8>;     from s
Elic@ELIC122UTF8>;    ) t;

NAME                          LEN RPAD_NAME                                                                        RPAD_NAME_LEN RPAD_NAME_LENB
------------------- ------------- -------------------------------------------------------------------------------- ------------- --------------
Привет                          6 Привет++++++++++++++                                                                        20             26
Привет мир                     10 Привет мир++++++++++                                                                        20             29
Hello                           5 Hello+++++++++++++++                                                                        20             20
Hello world                    11 Hello world+++++++++                                                                        20             20

Elic@ELIC122UTF8>; exec execute immediate 'alter session set nls_length_semantics = char'

PL/SQL procedure successfully completed.

Elic@ELIC122UTF8>; /

NAME                  LEN RPAD_NAME            RPAD_NAME_LEN RPAD_NAME_LENB
----------- ------------- -------------------- ------------- --------------
Привет                  6 Привет++++++++++++++            20             26
Привет мир             10 Привет мир++++++++++            20             29
Hello                   5 Hello+++++++++++++++            20             20
Hello world            11 Hello world+++++++++            20             20

Elic@ELIC122UTF8>; select *
Elic@ELIC122UTF8>; from nls_database_parameters
Elic@ELIC122UTF8>; where parameter in ('NLS_RDBMS_VERSION', 'NLS_LENGTH_SEMANTICS', 'NLS_CHARACTERSET');

PARAMETER                                                                                                                        VALUE
-------------------------------------------------------------------------------------------------------------------------------- ---------------
NLS_RDBMS_VERSION                                                                                                                12.2.0.1.0
NLS_LENGTH_SEMANTICS                                                                                                             BYTE
NLS_CHARACTERSET                                                                                                                 AL32UTF8

Elic@ELIC122UTF8>; 

...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39526240
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad,
ты русским языком скажи - о чем плачешь?
Ты чего ждешь, что длина в байтах и символах для русских букв одинаковой окажется для
NLS_CHARACTERSET = AL32UTF8 - не жди не окажется.
Или что у пробела байтовая длина вдруг прыгнет до двух байтов - не жди, не прыгнет в этой кодировке.
О чем плач?
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39526242
anvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nickТест с UTF8 ни очем не говорит.
Символы в этой кодировке имеют переменную длину 1-2б.

Бывают и три :) https://unicode-table.com/ru/2116/
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39526245
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boobyО чем плач?Не выполняется задокументированное (=гарантированное лоцией) "padded to length n characters "
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39526246
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad,
а, понял про rpad и семантику при отсутствии явных определений - извини.
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39526248
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boobyAmKad,
ты русским языком скажи - о чем плачешь?
Ты чего ждешь, что длина в байтах и символах для русских букв одинаковой окажется для
NLS_CHARACTERSET = AL32UTF8 - не жди не окажется.
Или что у пробела байтовая длина вдруг прыгнет до двух байтов - не жди, не прыгнет в этой кодировке.
О чем плач?
Тяжело, когда уровень не позволяет понять даже простейшие примеры?
И нравится же людям выставлять себя дураками =)
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39526276
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexFF__|,
и не говори...
выставлять - тщетное занятие.
Все что нужно - само выставится.
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39526481
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Workaround
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
column name1  format a25
column name2 format a25

with s (name) as
(select 'Привет'       from dual union all
 select 'Привет мир'   from dual union all
 select 'Hello'        from dual union all
 select 'Hello world'  from dual
)
select
rpad(         name , 20, '+') name1,
rpad(to_nchar(name), 20, '+') name2
from s;

NAME1                     NAME2
------------------------- -------------------------
Привет++++++++            Привет++++++++++++++
Привет мир+               Привет мир++++++++++
Hello+++++++++++++++      Hello+++++++++++++++
Hello world+++++++++      Hello world+++++++++
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39526498
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKadWorkaroundКстати, а как в PL/SQL?
Код: plsql
1.
exec dbms_output.put_line(rpad('Привет мир', 20, '+'))
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39526511
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

Код: plsql
1.
2.
3.
4.
5.
6.
set serveroutput on

exec dbms_output.put_line(rpad('Привет мир', 20, '+'));
Привет мир+

Процедура PL/SQL успешно завершена.
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39526536
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad
Код: plsql
1.
2.
exec dbms_output.put_line(rpad('Привет мир', 20, '+'));
Привет мир+

Печально. Боюсь предположить, что вернёт
Код: plsql
1.
exec dbms_output.put_line(rpad('Привет мир', 16, '+'));
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39526561
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

Да, обрезает.
Код: plsql
1.
2.
exec dbms_output.put_line(rpad('Привет мир', 16, '+'));
Привет м
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39526571
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKadДа, обрезает.Выходит, многобайтовый 12cR1 неприменим - не на-workaround-ишься.
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39526597
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

Перечитал тему. savell пытался донести до сообщества странное поведение rpad-а в ситуации, аналогичной моей, но, похоже, ему это не удалось.
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39526608
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKadПеречитал тему.Я тоже.
AmKadsavell пытался донести до сообщества странное поведение rpad-а в ситуации, аналогичной моей, но, похоже, ему это не удалось.Чтобы ему поверить, нужно было иметь аналогичное окружение под рукой, чтобы воспроизвести. К слову, у меня до сих пор нет.
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39526622
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Bug 3151144 RPAD / LPAD give unexpected result with Cyrillic characters in UTF8" - регрессия?
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39526641
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad,
мда....
Трудно поверить в то, что за багом скрывается ошибочное прямое использование lengthb
У меня тоже нет "подходящего окружения".
Не затруднит ли тебя удовлетворить мое любопытство и проверить, что в целевом окружении
возвращает такой самописный rpad:
-- замена стандартного rpad
Код: 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.
Function Rpad_u(str1 In Varchar2 
              , len In Pls_Integer
              , pad In Varchar2 
              )
  Return Varchar2          
Is

  istr_len Pls_integer;
  ipad_len Pls_integer;
  irep_tm  Pls_integer;

  ----------------   
  Function Replicate( px in Varchar2
                , pn In Pls_integer -- целая степень
                ) return Varchar2 
  Is

    degree Pls_integer;
    x_lc Long;
    mresult Long;
  Begin
    If pn = 0 Then return ''; End If;
    degree := pn; 
    x_lc := px;

    While BITAND(degree,1) = 0 
    Loop
      degree := Floor(0.5*degree);
      x_lc := x_lc||x_lc;
    End Loop; 
    mresult := x_lc;

    degree := Floor(0.5*degree);
    
    While degree != 0
    Loop
      x_lc := x_lc||x_lc;

      If BITAND(degree,1) != 0
        Then
          mresult := mresult||x_lc;
      End If;
      degree := Floor(0.5*degree);
    End Loop;
    Return mresult; 
  End;   
  ------------------------  
Begin 
  If len > 0 
    Then
    istr_len := length(str1);
    ipad_len := length(pad);
    irep_tm := ceil((len - istr_len) / ipad_len);
    
    Return Case When irep_tm > 0
                Then
                  substr(concat(str1, replicate(pad, irep_tm)), 1, len)
                When ipad_len > 0
                  Then   
                   substr(str1, 1, len)
                Else 
                  Null  
                End;  
  End If;    
  Return Null;
End;   
...
Рейтинг: 0 / 0
53 сообщений из 53, показаны все 3 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / И какая же всетаки длинна VARCHAR2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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