oracle字符类型 char,varchar2,varchar,clob,nvarchar,nclob

你是否对Oracle字符的类型有所了解?今天我们就对其进行归纳,其主要有CHAR、NCHAR、LONG、以及VARCHAR2(VARCHAR)、和NVARCHAR2几种Oracle字符类型。以下的文章就是对这几种类型的详细介绍。

CHAR,描述定长的Oracle字符串,如果实际值不够定义的长度,系统将以空格填充。它的声明方式如下CHAR(L),L为Oracle字符串长度,缺省为1,作为变量最大32767个字符,作为数据存储在ORACLE8中最大为2000。

VARCHAR2(VARCHAR),描述变长字符串。它的声明方式如下VARCHAR2(L),L为字符串长度,没有缺省值,作为变量最大32767个字节,作为数据存储在ORACLE8中最大为4000。在多字节语言环境中,实际存储的Oracle字符个数可能小于L值。

例如:当语言环境为中文(SIMPLIFIED CHINESE_CHINA.ZHS16GBK)时,一个VARCHAR2(200)的数据列可以保存200个英文字符或者100个汉字字符。

LONG,在数据库存储中可以用来保存高达2G的数据,作为变量,可以表示一个最大长度为32760字节的可变字符串。

NCHAR、NVARCHAR2,国家Oracle字符集,与环境变量NLS指定的语言集密切相关,使用方法和CHAR、VARCHAR2相同。

(varchar2是oracle提供的独特的数据类型,oracle保证在任何版本中该数据类型向上和向下兼容,但不保证varchar。因为varchar是标准sql提供的数据类型,有可能随着sql标准的变化而改变,推荐用varchar2。)

(CHAR如果存放字母数字占1个字节,存放GBK编码的汉字存放2个字节,存放UTF-8编码的汉字占用3个字节;NCHAR根据所选Oracle字符集来定义存放字符的占用字节数,一般都为2个字节存放一个字符(不管字符或者汉字)。同理VARCHAR2与NVARCHAR2的区别。)

 

  CHAR CHAR数据类型存储固定长度的子符值。一个CHAR数据类型可以包括1到2000个字符。如果对CHAR没有明确地说明长度,它的默认长度则设置为1.如果对某个CHAR类型变量赋值,其长度小于规定的长度,那么Oracle自动用空格填充。

 

    VARCHAR2存储可变长度的字符串。虽然也必须指定一个VARCHAR2数据变量的长度,但是这个长度是指对该变量赋值的的最大长度而非实际赋值长度。不需要用空格填充。最多可设置为4000个字符。

 

    因为VARCHAR2数据类型只存储为该列所赋的字符(不加空格),所以VARCHAR2需要的存储空间比CHAR数据类型要小。

 

    Oracle推荐使用VARCHAR2

 

    NCHAR和NVARCHAR2 NCHAR和NVARCHAR2数据类型分别存储固定长度与可变长度的字符数据,但是它们使用的是和数据库其他类型不同的字符集。在创建数据库时,需要指 定所使用的字符集,以便对数据库中数据进行编码。还可以指定一个辅助的字符集[即本地语言集(National Language Set,简称NLS)]。NCHAR和NVARCHAR2类型的列使用辅助字符集。

 

    在Oracle9i中,可以以字符而不是字节为单位来表示NCHAR和NVARCHAR2列的长度。

 

    LONG LONG数据类型可以存放2GB的字符数据,它是从早期版本中继承来的。现在如果想存储大容量的数据,Oracle推荐使用CLOB和NCLOB数据类型。在表和SQL语句中使用LONG类型有许多限制。

 

    CLOB和NCLOB CLOB和NCLOB数据类型可以存储多达4GB的字符数据。NCLOB数据类型可存储NLS数据。

 

 

-------------------------------------------

作者:赵杰迪

-------------------------------------------

原文地址:https://www.cnblogs.com/zhaojiedi1992/p/oracle_sql_zifu_0.html