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

 更新时间:2016年12月14日 09:54:12   投稿:daisy  
这篇文章主要给大家详细介绍了关于Oralce中VARCHAR2()与NVARCHAR2()的区别,文中先通过翻译官方的介绍进行区别总结,然后由一个实战示例代码进行演示,相信对大家的理解会很有帮助,有需要的朋友们下面来跟着小编一起看看吧。

一、先来看看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数据库INSERT INTO的几种用法举例

    Oracle数据库INSERT INTO的几种用法举例

    INSERT INTO语句可以有多种写法,具体取决于插入的数据来源和目标,这篇文章主要给大家介绍了关于Oracle数据库INSERT INTO的几种用法举例,需要的朋友可以参考下
    2024-02-02
  • Oracle如何获取数据库系统的当前时间

    Oracle如何获取数据库系统的当前时间

    这篇文章主要介绍了Oracle如何获取数据库系统的当前时间问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Oracle数据库统计信息方法详解

    Oracle数据库统计信息方法详解

    这篇文章主要介绍了如何查看和收集Oracle数据库中的统计信息,包括表、索引和列的统计信息,介绍了DBMS_STATS包的功能和使用方法,以及如何通过分析和删除统计信息来优化数据库性能,需要的朋友可以参考下
    2024-12-12
  • 限制ip访问Oracle数据库的方法步骤

    限制ip访问Oracle数据库的方法步骤

    这篇文章主要给大家介绍了关于限制ip访问Oracle数据库的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者使用Oracle数据库具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-08-08
  • Oracle中的table()函数使用

    Oracle中的table()函数使用

    这篇文章主要介绍了Oracle中的table()函数的使用,提高查询效率,利用table()函数,可接收输入参数,然后将pl/sql 返回的结果集代替table,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • Oracle中sql语句(+)符号代表连接的使用讲解

    Oracle中sql语句(+)符号代表连接的使用讲解

    今天小编就为大家分享一篇关于Oracle中sql语句(+)符号代表连接的使用讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • 在oracle数据库里创建自增ID字段的步骤

    在oracle数据库里创建自增ID字段的步骤

    本节主要介绍了在oracle数据库里创建自增ID字段的步骤,需要的朋友可以参考下
    2014-07-07
  • oracle存储过程常用的技巧(详)

    oracle存储过程常用的技巧(详)

    存储过程是在大型数据库系统中存储过程在数据库中经过第一次编译后就不需要再次编译,用户通过指定存储过程的名字并给出参数来,通过本篇文章带领大家去学习oracle存储过程常用的技巧,感兴趣的朋友一起来学习吧
    2015-08-08
  • ORACLE 10G修改字符编码没有超字符集的限制

    ORACLE 10G修改字符编码没有超字符集的限制

    ORACLE 10G修改字符编码没有超字符集的限制,可以直接修改成自己想要字符串,之前已经存在数据就需要重新再导入
    2014-08-08
  • Oracle数据库中字符串截取最全方法总结

    Oracle数据库中字符串截取最全方法总结

    Oracle提供了多种截取字符串的操作方法,可以根据具体需求选择合适的方法进行操作,下面这篇文章主要给大家总结介绍了关于Oracle数据库中字符串截取的最全方法,需要的朋友可以参考下
    2024-03-03

最新评论