`

Oracle里Varchar、varchar2的参数(byte和char)的区别测试

阅读更多

Oracle里Varchar、varchar2的参数(byte和char)的区别测试
1 看一下语法图


2 下面进行sqlplus的测试,使用scott/tiger帐号。

SQL> create table test(name varchar(5 byte),namec varchar(5 char));表已创建。 SQL> insert into test(name) values('12345');
已创建 1 行。
SQL> insert into test(name) values('123456');
insert into test(name) values('123456')
第 1 行出现错误:
ORA-12899: 列 "SCOTT"."TEST"."NAME" 的值太大 (实际值: 6, 最大值: 5)

SQL> insert into test(name) values('天津');
已创建 1 行。

SQL> insert into test(name) values('天津市');
insert into test(name) values('天津市')
第 1 行出现错误:
ORA-12899: 列 "SCOTT"."TEST"."NAME" 的值太大 (实际值: 6, 最大值: 5)

SQL> insert into test(namec) values('12345');
已创建 1 行。
SQL> insert into test(namec) values('123456');
insert into test(namec) values('123456')
第 1 行出现错误:
ORA-12899: 列 "SCOTT"."TEST"."NAMEC" 的值太大 (实际值: 6, 最大值: 5)
SQL> insert into test(namec) values('天津');
已创建 1 行。
SQL> insert into test(namec) values('天津市');
已创建 1 行。
SQL> insert into test(namec) values('天津市北京');
已创建 1 行。
SQL> insert into test(namec) values('天津市北京市');
insert into test(namec) values('天津市北京市')
第 1 行出现错误:
ORA-12899: 列 "SCOTT"."TEST"."NAMEC" 的值太大 (实际值: 6, 最大值: 5)

SQL> select * from test;
NAME  NAMEC
----- ----------
12345
天津
      12345
     天津
      天津市
      天津市北京
已选择6行。
SQL>
3 分析
由于一个汉字在我的GBK系统里占用2个字节,所以byte的只能插入2个汉字,而char的可以插入5个汉字。
所以byte 就是字节数,对于汉字,GBK占用2个字节,如果是UTF-8则占用3个字节。
为了充分利用4000个的上限,给自己减少麻烦,建议存储含有中文文字的字段时,采用char类型。

 

分享到:
评论

相关推荐

    oracle中varchar2(byte)和varchar2(char).doc

    oracle中varchar2(byte)和varchar2(char) 细节决定成败,大家在设计数据库建表的时候一定要注意。

    Oracle9i的init.ora参数中文说明

    说明: 使用字节或码点语义来指定新列的创建, 如 char, varchar2, clob, nchar, nvarchar2, nclob 列。各种字符集对字符都有各自的定义。在客户机和服务器上使用同一字符集时, 应以该字符集所定义的字符来衡量字符串...

    Oracle8i_9i数据库基础

    §1.3.1 SQL和SQL*PLUS的差别 25 §1.3.2 PL/SQL语言 27 §1.4 登录到SQL*PLUS 27 §1.4.1 UNIX环境 27 §1.4.2 Windows NT和WINDOWS/2000环境 29 §1.5 常用SQL*PLUS 附加命令简介 32 §1.5.1 登录到SQL*PLUS 32 §...

    Oracle读取excel数据

    推荐阅读:Oracle导出excel数据 废话不多说了,直接给大家奔入主题了。...,BATCH_CODE VARCHAR2 (480 BYTE)--批的Code,Excel用,因为一个Excel可能有多个 ,BATCH_NAME VARCHAR2 (4000 BYTE)--批的名称 ,ROW_

    oracle函数大全.doc

    ORACLE函数大全 ________________________________________ 作者:[本站编辑] 来源:[CSDN] 浏览:[ ] SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii('A') A,ascii('a') a,...

    MYSQL,SQLSERVER,ORACLE常用的函数

    SQL> select instr('oracle traning','ra',1,2) instring from dual; INSTRING --------- 9 6.LENGTH 返回字符串的长度; SQL> select name,length(name),addr,length(addr),sal,length(to_char(sal)) from ....

    Ora2PgDump:Oracle 到 PostgreSQL 转储

    VARCHAR2 -> 文本/varchar/char CHAR -> 文本/varchar/char 日期 -> 没有时区/日期的时间戳 TIMESTAMP -> 没有时区的时间戳 带时区的时间戳 -> 带时区的时间戳 NUMBER -> 十进制/整数/smallint(提供合适的值) ...

    数据库物理设计.pdf

    如果这个列很少⽤,也可以选择varchar 3、⼀般不宜定义⼤于50byte的char类型列。 decimal与float如何选择: 1、精确选decimal。 2、⾮精确选float,因为占⽤空间⼩。 时间类型如何存储: 对于只是查询显⽰或变动不...

    Oracle sqldeveloper without jdk (win+linux)

    - Bug 4918586: National character set datatypes (NCHAR, NVARCHAR2, NCLOB) are converted to the database character set datatypes (CHAR, VARCHAR2, CLOB) in the Run PL/SQL dialog box. Workaround: ...

    Java面试宝典2020修订版V1.0.1.doc

    16、char、varchar2、varchar有什么区别? 45 17、Oracle和Mysql的区别? 46 18、Oracle语句有多少类型 46 19、oracle分页语句 47 20、从数据库中随机取50条 47 21、order by与group by的区别 47 22、commit在哪里会...

Global site tag (gtag.js) - Google Analytics