varcharの文字数とバイト数

 

(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)

https://docs.microsoft.com/ja-jp/sql/t-sql/data-types/nchar-and-nvarchar-transact-sql?view=sql-server-ver15

 

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 よりも少なくなる場合があります。