(8.0.21)
drop table tab1;
create table tab1(col1 int, col2 varchar(3));
insert into tab1 values(1,'a');
insert into tab1 values(2,'ab');
insert into tab1 values(3,'abc');
insert into tab1 values(4,'abcd');
insert into tab1 values(11,'あ');
insert into tab1 values(12,'あい');
insert into tab1 values(13,'あいう');
insert into tab1 values(14,'あいうえ');
select col1,col2,char_length(col2),length(col2) from tab1;
→varcharでの指定は文字数
(19c)
drop table tab1 purge;
drop table tab2 purge;
create table tab1(col1 int, col2 varchar2(3));
create table tab2(col1 int, col2 nvarchar2(3));
insert into tab1 values(1,'a');
insert into tab1 values(2,'ab');
insert into tab1 values(3,'abc');
insert into tab1 values(4,'abcd');
insert into tab1 values(11,'あ');
insert into tab1 values(12,'あい');
insert into tab1 values(13,'あいう');
insert into tab1 values(14,'あいうえ');
insert into tab2 values(1,'a');
insert into tab2 values(2,'ab');
insert into tab2 values(3,'abc');
insert into tab2 values(4,'abcd');
insert into tab2 values(11,'あ');
insert into tab2 values(12,'あい');
insert into tab2 values(13,'あいう');
insert into tab2 values(14,'あいうえ');
commit;
select col1,col2,length(col2),lengthb(col2) from tab1;
select col1,col2,length(col2),lengthb(col2) from tab2;
→varchar2での指定はバイト数、nvarchar2での指定は文字数
(13)
drop table tab1;
create table tab1(col1 int, col2 varchar(3));
insert into tab1 values(1,'a');
insert into tab1 values(2,'ab');
insert into tab1 values(3,'abc');
insert into tab1 values(4,'abcd');
insert into tab1 values(11,'あ');
insert into tab1 values(12,'あい');
insert into tab1 values(13,'あいう');
insert into tab1 values(14,'あいうえ');
select col1,col2,char_length(col2),octet_length(col2) from tab1;
→varcharでの指定は文字数
(2019)
drop table tab1;
drop table tab2;
create table tab1(col1 int, col2 varchar(3));
create table tab2(col1 int, col2 nvarchar(3));
insert into tab1 values(1,'a');
insert into tab1 values(2,'ab');
insert into tab1 values(3,'abc');
insert into tab1 values(4,'abcd');
insert into tab1 values(11,'あ');
insert into tab1 values(12,'あい');
insert into tab1 values(13,'あいう');
insert into tab1 values(14,'あいうえ');
insert into tab2 values(1,'a');
insert into tab2 values(2,'ab');
insert into tab2 values(3,'abc');
insert into tab2 values(4,'abcd');
insert into tab2 values(11,'あ');
insert into tab2 values(12,'あい');
insert into tab2 values(13,'あいう');
insert into tab2 values(14,'あいうえ');
select col1,col2,len(col2),datalength(col2) from tab1;
select col1,col2,len(col2),datalength(col2) from tab2;
→varcharでの指定はバイト数、nvarcharでの指定は文字数
※NVARCHAR(n) では、n によって文字長がバイトペア (0-4,000) で定義されます。
n は、格納できる文字数を定義しません。
補助文字によって 2 つのバイト ペア (またはサロゲート ペア) が使用されるため、
格納できる文字数は n よりも少なくなる場合があります。