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)区别详解 #### 一、引言 在Oracle数据库中,`VARCHAR2`是最常用的字符数据类型之一,用于存储变长的字符串。然而,在定义`VARCHAR2`类型时,可以选择指定长度为`BYTE`...
例如,在 DB2/400 中,我们可以使用定长的 CHAR(N)类型与 Oracle 的 VARCHAR2(n)相对应,这样可以提高效率和节省存储空间。 四、LOB 类型 DB2/400 提供 VARCHAR 和 CLOB 与 Oracle 中的 RAW 和 LONG RAW 相...
在Oracle数据库中,默认情况下,`VARCHAR2`类型字段的最大长度为4000个字符。当需要处理更长的字符串时(例如,超过4000个字符),可以采用多种方法来解决这一问题。本文将详细介绍如何在.NET环境中处理和传递长度...
Oracle中的VARCHAR2类型可以对应DB2/400中的CHAR类型和VARCHAR类型。当n时,可以使用DB2/400中的CHAR类型或VARCHAR类型。当n>4000时,可以使用DB2/400中的VARCHARLONG类型或CLOB类型。 三、NUMBER类型 Oracle中的...
当你指定VARCHAR2(size)时,size参数可以是BYTE或CHAR,BYTE意味着按字节计算长度,CHAR则表示按字符计算长度,这对于多字节字符集尤其重要,因为它会影响存储的实际容量。 另一方面,NVARCHAR2()类型是用来存储...
2. **字符串类型**:VARCHAR2(可变长度字符串)、CHAR(固定长度字符串)、LONG(长字符串)和CLOB(大对象,用于存储大量文本数据)。 3. **日期/时间类型**:DATE(包含日期和时间信息)、TIMESTAMP(带有时区的...
在Oracle中,`VARCHAR2`可以指定为`VARCHAR2(n BYTES)`或`VARCHAR2(n CHAR)`,前者按字节计数,后者按字符计数。对于非ASCII字符集,`BYTES`可能需要更多空间。 #### §1.4 CHAR 还是 VARCHAR2 通常,选择`VARCHAR...
3. **BYTE 和 CHAR**: 在Oracle中,VARCHAR2可以指定为字节(BYTE)或字符(CHAR)。BYTE用于存储多字节字符,如Unicode字符,而CHAR则用于单字节字符集。如果不确定字符集,通常推荐使用VARCHAR2。 4. **CHAR vs ...
- **VARCHAR2(size[BYTE|CHAR])**:变长的字符数据类型,最大长度为`size`字节或字符,默认和最小长度为1字节或字符,最大长度为4000字节。`BYTE`表示按照字节长度进行语义处理,而`CHAR`表示按照字符长度进行语义...
- 多字节数据在`CHAR`和`VARCHAR2`列中存储。如果源数据库的长度语义是BYTE,而目标设置为CHAR,则需要在配置中使用Replicat参数`SOURCEDEFS`,并在目标上放置DEFGEN生成的定义文件,以支持语义差异。无论源和目标...
- `VARCHAR2` 类型在 Oracle 中也有扩展为 `oracle.sql.CHAR` - `BFILE` 类型是 Oracle 特有的大对象类型,用于存储外部文件,没有对应的 JDBC 类型,但可以通过 `oracle.jdbc.OracleTypes.BFILE` 访问 - `ROWID`...
- VARCHAR和VARCHAR2:可变长度的字符串,MySQL和Oracle都有。 2. Oracle数据类型: - NUMBER:灵活的数值类型,可以表示整数和小数。 - RAW:二进制数据,与MySQL的BINARY类似。 - BLOB和CLOB:用于存储大对象...
- `Variable Characters` 或 `varchar`、`VARCHAR2`: 对应 Oracle 的 `VARCHAR2`,可变长度的字符串。 - `Maximum Long Characters` 或 `varchar`、`CLOB`: 对应 Oracle 的 `CLOB`,用于存储最大长度的文本。 - `...
说明: 使用字节或码点语义来指定新列的创建, 如 char, varchar2, clob, nchar, nvarchar2, nclob 列。各种字符集对字符都有各自的定义。在客户机和服务器上使用同一字符集时, 应以该字符集所定义的字符来衡量字符串...
需要注意的是,ORACLE 数据库可以存储字节或字符,例如 CHAR(12 BYTE) 和 CHAR(12 CHAR) 的意义是不同的。默认情况下,ORACLE 数据库存储字节,可以通过查看数据库参数 NLS_LENGTH_SEMANTICS 的值来确定。 ```sql ...
Oracle数据库是世界上最流行的关系型数据库管理系统之一,其强大的功能和高效的数据管理能力使其在企业级应用中广泛应用。本文将深入探讨Oracle数据类型及其存储方式,帮助读者理解和掌握Oracle数据库的基础知识。 ...