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

所属分类: 数据库 / oracle 阅读数: 414
收藏 0 赞 0 分享

一、先来看看Oralce中VARCHAR2()和NVARCHAR2()的官方定义

官方文档定义如下:

VARCHAR2(size [BYTE | CHAR])

Variable-length character string having maximum length size bytes or characters. Maximum size is 4000 bytes or characters, and minimum is 1 byte or 1 character. You must specify size for VARCHAR2.
BYTE indicates that the column will have byte length semantics. CHAR indicates that the column will have character semantics.

NVARCHAR2(size)

Variable-length Unicode character string having maximum length size characters. The number of bytes can be up to two times size for AL16UTF16 encoding and three times size for UTF8 encoding. Maximum size is determined by the national character set definition, with an upper limit of 4000 bytes. You must specify size for NVARCHAR2.

二、中文翻译:

VARCHAR2(size [BYTE | CHAR])

具有最大长度的字节数(bytes)或字符数(char)的可变长度的字符类型。最大长度为4000字节/字符,最小长度是1字节/字符。你必须为VARCHAR2()类型指定大小。

BYTE代表该列以字节计算长度,CHAR代表该列以字符计算长度。

NVARCHAR2(size)

具有最大长度的带有字符集属性的可变长度的字符类型。它的长度是AL16UTF16字符集的2倍,UTF8字符集的三倍。它的最大长度取决于字符集,上限位4000字节。您必须为NVARCHAR2()类型指定大小。

三、实战演练

使用字符集为UTF8。

# 验证NVARCHAR2(size)与VARCHAR2(size CHAR)相似
SQL> create table t_varchar2(name varchar2(6 CHAR));
Table created
SQL> insert into t_varchar2 values('中国');
1 row inserted
SQL> insert into t_varchar2 values('中华人民共和');
1 row inserted
SQL> insert into t_varchar2 values('中华人民共和国');
insert into t_varchar2 values('中华人民共和国')
ORA-12899: 列 "SCOTT"."T_VARCHAR2"."NAME" 的值太大 (实际值: 7, 最大值: 6)
SQL> create table t_nvarchar2(name nvarchar2(6));
Table created
SQL> insert into t_nvarchar2 values('中国');
1 row inserted
SQL> insert into t_nvarchar2 values('中华人民共和');
1 row inserted
SQL> insert into t_nvarchar2 values('中华人民共和国');
insert into t_nvarchar2 values('中华人民共和国')
ORA-12899: 列 "SCOTT"."T_NVARCHAR2"."NAME" 的值太大 (实际值: 7, 最大值: 6)
# 验证NVARCHAR2(sie)与VARCHAR(size CHAR)存在最大长度不同
SQL> create table t_varchar2(name varchar2(4000 CHAR));
Table created
SQL> create table t_nvarchar2(name nvarchar2(4000));
create table t_nvarchar2(name nvarchar2(4000))
ORA-00910: 指定的长度对于数据类型而言过长

四、区别总结:

NVARCHAR2(size)VARCHAR2(size CHAR)相似,唯一的区别是NVARCHAR2(size)的最大长度是4000字节(实验测试结果是,在utf8的字符集下,最大长度为2000字符),而VARCHAR2(size CHAR)的最大长度是4000字符。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

更多精彩内容其他人还在看

oracle(plsql)生成流水号

这篇文章主要介绍了oracle(plsql)生成流水号,需要的朋友可以参考下
收藏 0 赞 0 分享

oracle中decode函数的使用方法

这篇文章主要介绍了oracle中decode函数的使用方法,需要的朋友可以参考下
收藏 0 赞 0 分享

Oracle数据远程连接的四种设置方法和注意事项

Oracle数据库的远程连接可以通过多种方式来实现,本文我们主要介绍四种远程连接的方法和注意事项,并通过示例来说明,接下来我们就开始介绍
收藏 0 赞 0 分享

oracle表空间中空表统计方法示例介绍

这篇文章主要介绍了oracle表空间中空表统计方法,需要的朋友可以参考下
收藏 0 赞 0 分享

oracle用户权限、角色管理详解

这篇文章主要介绍了oracle用户权限、角色管理的使用和示例,需要的朋友可以参考下
收藏 0 赞 0 分享

oracle用户权限管理使用详解

这篇文章主要介绍了oracle用户权限管理使用方法,需要的朋友可以参考下
收藏 0 赞 0 分享

oracle生成动态前缀且自增号码的函数分享

这篇文章主要介绍了oracle生成动态前缀且自增号码的函数,需要的朋友可以参考下
收藏 0 赞 0 分享

45个非常有用的 Oracle 查询语句小结

这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询。这些是所有 Oracle 开发者都必备的技能,所以快快收藏吧
收藏 0 赞 0 分享

oracle监控某表变动触发器例子(监控增,删,改)

这篇文章主要介绍了oracle监控某表变动触发器例子(监控增,删,改),用于监控某表的变动并生成日志记录到另一个表,需要的朋友可以参考下
收藏 0 赞 0 分享

oracle 数据库隔离级别学习

这篇文章主要介绍了oracle数据库的隔离级别相关的知识,数据库操作的隔离级别,有需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多