Oracle中NVARCHAR2与VARCHAR2的区别
Oralce官方文档“Datatypes”部分对NVARCHAR2、VARCHAR2以及VARCHAR有一段描述,可以清晰得到它们的区别。罗列在此,供大家参考。
【链接】http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements001.htm#sthref71
NVARCHAR2 Datatype
The
NVARCHAR2 datatype is a Unicode-only datatype. When you create a table
with an NVARCHAR2 column, you supply the maximum number of characters it
can hold. Oracle subsequently
stores each value in the column exactly as you specify it, provided the
value does not exceed the maximum length of the column.
The
maximum length of the column is determined by the national character
set definition. Width specifications of character datatype NVARCHAR2
refer to the number of characters. The maximum column size allowed is
4000 bytes. Please refer to Oracle Database Globalization Support Guide
for information on Unicode datatype support.
VARCHAR2 Datatype
The
VARCHAR2 datatype specifies a variable-length character string. When
you create a VARCHAR2 column, you supply the maximum number of bytes or
characters of data that it can hold. Oracle subsequently stores each
value in the column exactly as you specify it, provided the value does
not exceed the column's maximum length of the column. If you try to
insert a value that exceeds the specified length, then Oracle returns an
error.
You
must specify a maximum length for a VARCHAR2 column. This maximum must
be at least 1 byte, although the actual string stored is permitted to be
a zero-length string (''). You can use the CHAR qualifier, for example
VARCHAR2(10 CHAR), to give the maximum length in characters instead of
bytes. A character is technically a code point of the database character
set. CHAR and BYTE qualifiers override the setting of the
NLS_LENGTH_SEMANTICS parameter, which has a default of bytes. For
performance reasons, Oracle recommends that you use the
NLS_LENGTH_SEMANTICS parameter to set length semantics and that you use
the BYTE and CHAR qualifiers only when necessary to override the
parameter. The maximum length of VARCHAR2 data is 4000 bytes. Oracle
compares VARCHAR2 values using nonpadded comparison semantics.
To
ensure proper data conversion between databases with different
character sets, you must ensure that VARCHAR2 data consists of
well-formed strings. See Oracle Database Globalization Support Guide for
more information on character set support.
VARCHAR Datatype
Do
not use the VARCHAR datatype. Use the VARCHAR2 datatype instead.
Although the VARCHAR datatype is currently synonymous with VARCHAR2, the
VARCHAR datatype is scheduled to be redefined as a separate datatype
used for variable-length character strings compared with different
comparison semantics.
【注意】
VARCHAR2是Oracle提供的特定数据类型,Oracle可以保证VARCHAR2在任何版本中该数据类型都可以向上和向下兼容。
VARCHAR在Oracle中不建议使用。
具体到NVARCHAR2和VARCHAR2的区别,从使用角度来看区别在于:NVARCHAR2在计算长度时和字符集相关的,例如数据库是中文字符集时以长度10为例,则
1、NVARCHAR2(10)是可以存进去10个汉字的,如果用来存英文也只能存10个字符。
2、而VARCHAR2(10)的话,则只能存进5个汉字,英文则可以存10个。
引用自:http://www.cnblogs.com/flyingfish/archive/2010/01/15/1648448.html