0
点赞
收藏
分享

微信扫一扫

vue element upload取消上传后终止请求

char() 中文字符和英文字符字节占用

1.创建测试表和测试数据

SYS@db11g> create table t1016 (name char(10));

Table created.

CHAR(10) 表示这个列有固定长度 10 个字节

SYS@db11g> insert into t1016 values('历史');

1 row created.

SYS@db11g> commit;

2.查看字符长度和字节长度

SYS@db11g> select length('历史'),lengthb('历史') from dual;

LENGTH('历史') LENGTHB('历史')
-------------- ---------------
2 6

LENGTH 函数计算并返回字符串中字符的数量。
LENGTHB 函数计算并返回字符串的字节数。

3.测试中文字符的字节占位情况

SYS@db11g> select name,length(name),lengthb(name) from t1016;

NAME LENGTH(NAME) LENGTHB(NAME)
---------- ------------ -------------
历史 6 10

SYS@db11g> select VALUE from nls_database_parameters where PARAMETER='NLS_CHARACTERSET';

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

中文字符在 AL32UTF8 字符集中占用 3 个字节

name char(10) ->'历史'->'历史'占用2*3=6个字节->char(10) 再补4个空格为10个字节
lengthb(name) 字节长度为10

'历史'占用2个中文字符,加上新补的4个空格(4个空格字符)LENGTH(NAME)字符长度为2+4=6

SYS@db11g> select name,length(name),lengthb(name),dump(name,16) from t1016;

NAME LENGTH(NAME) LENGTHB(NAME) DUMP(NAME,16)
---------- ------------ ------------- ------------------------------------------------------------
历史 6 10 Typ=96 Len=10: e5,8e,86,e5,8f,b2,20,20,20,20

SYS@db11g> select dump(' ',16) from dual;

DUMP('',16)
----------------
Typ=96 Len=1: 20

补充的空格16进制为20

4.测试英文字符的字节占位情况

SYS@db11g> insert into t1016 values('a');

1 row created.

SYS@db11g> commit;

Commit complete.

SYS@db11g> select name,length(name),lengthb(name),dump(name,16) from t1016;


NAME LENGTH(NAME) LENGTHB(NAME) DUMP(NAME,16)
---------- ------------ ------------- ------------------------------------------------------------
历史 6 10 Typ=96 Len=10: e5,8e,86,e5,8f,b2,20,20,20,20
a 10 10 Typ=96 Len=10: 61,20,20,20,20,20,20,20,20,20

'a' 1个英文字符占用1个字节,保存到char(10)需要补全9个空格,因此字符长度为10个(1+9=10),字节长度为10个(1+9=10) 

举报

相关推荐

0 条评论