`
frank1998819
  • 浏览: 758744 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类

Oracle里varchar2(char)和varchar2(byte)的区别 (转)

 
阅读更多

SQL> create table test(name varchar(5 byte),namec varchar(5 char));
表已创建。

-----------------------byte测试------------------------------------

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)

-----------------------char测试------------------------------------

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行。


-------------------------分析------------------------------------
由于一个汉字在我的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)区别详解 #### 一、引言 在Oracle数据库中,`VARCHAR2`是最常用的字符数据类型之一,用于存储变长的字符串。然而,在定义`VARCHAR2`类型时,可以选择指定长度为`BYTE`...

    Oracle与DB2数据类型分类对应说明

    例如,在 DB2/400 中,我们可以使用定长的 CHAR(N)类型与 Oracle 的 VARCHAR2(n)相对应,这样可以提高效率和节省存储空间。 四、LOB 类型 DB2/400 提供 VARCHAR 和 CLOB 与 Oracle 中的 RAW 和 LONG RAW 相...

    Oracle与DB2数据类型的对应说明书

    二、VARCHAR2和CHAR类型 Oracle中的VARCHAR2类型可以对应DB2/400中的CHAR类型和VARCHAR类型。当n时,可以使用DB2/400中的CHAR类型或VARCHAR类型。当n>4000时,可以使用DB2/400中的VARCHARLONG类型或CLOB类型。 三...

    Oracle接收长度大于4000的字符串

    在Oracle数据库中,默认情况下,`VARCHAR2`类型字段的最大长度为4000个字符。当需要处理更长的字符串时(例如,超过4000个字符),可以采用多种方法来解决这一问题。本文将详细介绍如何在.NET环境中处理和传递长度...

    Oralce中VARCHAR2()与NVARCHAR2()的区别介绍

    总之,Oracle中的VARCHAR2()和NVARCHAR2()是两种重要的字符串数据类型,它们在存储方式、字符编码和长度限制上有所区别。在数据库设计时,理解这些差异可以帮助我们做出更合适的决策,确保数据的完整性和存储效率。

    Oracle与.Net 数据类型映射

    2. **字符串类型**:VARCHAR2(可变长度字符串)、CHAR(固定长度字符串)、LONG(长字符串)和CLOB(大对象,用于存储大量文本数据)。 3. **日期/时间类型**:DATE(包含日期和时间信息)、TIMESTAMP(带有时区的...

    oracle-java数据类型1

    - `VARCHAR2` 类型在 Oracle 中也有扩展为 `oracle.sql.CHAR` - `BFILE` 类型是 Oracle 特有的大对象类型,用于存储外部文件,没有对应的 JDBC 类型,但可以通过 `oracle.jdbc.OracleTypes.BFILE` 访问 - `ROWID`...

    oracle数据类型及存储方式.doc

    在Oracle中,`VARCHAR2`可以指定为`VARCHAR2(n BYTES)`或`VARCHAR2(n CHAR)`,前者按字节计数,后者按字符计数。对于非ASCII字符集,`BYTES`可能需要更多空间。 #### §1.4 CHAR 还是 VARCHAR2 通常,选择`VARCHAR...

    mysql与oracle数据类型对应关系.pdf

    - VARCHAR和VARCHAR2:可变长度的字符串,MySQL和Oracle都有。 2. Oracle数据类型: - NUMBER:灵活的数值类型,可以表示整数和小数。 - RAW:二进制数据,与MySQL的BINARY类似。 - BLOB和CLOB:用于存储大对象...

    [整理版]oracle数据类型及存储方式.doc

    3. **BYTE 和 CHAR**: 在Oracle中,VARCHAR2可以指定为字节(BYTE)或字符(CHAR)。BYTE用于存储多字节字符,如Unicode字符,而CHAR则用于单字节字符集。如果不确定字符集,通常推荐使用VARCHAR2。 4. **CHAR vs ...

    oracle goldengate11支持的复制对象列表

    - 多字节数据在`CHAR`和`VARCHAR2`列中存储。如果源数据库的长度语义是BYTE,而目标设置为CHAR,则需要在配置中使用Replicat参数`SOURCEDEFS`,并在目标上放置DEFGEN生成的定义文件,以支持语义差异。无论源和目标...

    PowerDesigner字段与Oracle字段对应

    - `Variable Characters` 或 `varchar`、`VARCHAR2`: 对应 Oracle 的 `VARCHAR2`,可变长度的字符串。 - `Maximum Long Characters` 或 `varchar`、`CLOB`: 对应 Oracle 的 `CLOB`,用于存储最大长度的文本。 - `...

    Oracle9i数据类型Java数据类型Schema类型对比.doc

    - String 类型用于存储文本,与 Oracle9i 中的 CHAR 和 VARCHAR2 类型匹配。 - Date 和 Timestamp 类型用于日期和时间操作,与 Oracle9i 中的 DATE 和 TIMESTAMP 类型相匹配。 3. Schema 类型: - 在数据库设计...

    oracle数据类型及存储方式

    #### §1.3 BYTE 和 CHAR 在Oracle中,`BYTE`数据类型与字符编码有关,它存储的是字节而非字符。一个字符可能由多个字节组成,具体取决于字符集(如UTF-8)。`CHAR`数据类型则按字符存储,不受字符集影响。 #### ...

    Oracle SQL基础培训

    - **VARCHAR2(size[BYTE|CHAR])**:变长的字符数据类型,最大长度为`size`字节或字符,默认和最小长度为1字节或字符,最大长度为4000字节。`BYTE`表示按照字节长度进行语义处理,而`CHAR`表示按照字符长度进行语义...

    ORACLE数据库汉字占几个字节问题.pdf

    需要注意的是,ORACLE 数据库可以存储字节或字符,例如 CHAR(12 BYTE) 和 CHAR(12 CHAR) 的意义是不同的。默认情况下,ORACLE 数据库存储字节,可以通过查看数据库参数 NLS_LENGTH_SEMANTICS 的值来确定。 ```sql ...

Global site tag (gtag.js) - Google Analytics