2 Day Developer > Working in a Global Environ... > SQL and PL/SQL Programming ... > SQL NCHAR Datatypes
SQL NCHAR Datatypes |
Previous |
Next |
There are two SQL NCHAR
datatypes:
When you define a table column or a PL/SQL variable as the NCHAR
datatype, the length is specified as the number of characters. For example, the following statement creates a column with a maximum length of 30 characters:
CREATE TABLE table1 (column1 NCHAR(30));
The maximum number of bytes for the column is determined as follows:
For example, if the national character set is UTF8, then the maximum byte length is 30 characters times 3 bytes for each character, or 90 bytes.
The national character set, which is used for all NCHAR
datatypes, is defined when the database is created. The national character set can be either UTF8 or AL16UTF16. The default is AL16UTF16.
The maximum column size allowed is 2000 characters when the national character set is UTF8 and 1000 when it is AL16UTF16. The actual data is subject to the maximum byte limit of 2000. The two size constraints must be satisfied at the same time. In PL/SQL, the maximum length of the NCHAR
data is 32,767 bytes. You can define an NCHAR
variable of up to 32,767 characters, but the actual data cannot exceed 32,767 bytes. If you insert a value that is shorter than the column length, then Oracle pads the value with blanks to whichever length is smaller: maximum character length or maximum byte length.
The NVARCHAR2
datatype specifies a variable-length character string that uses the national character set. When you create a table with an NVARCHAR2
column, you specify the maximum number of characters for the column. Lengths for NVARCHAR2
are in units of characters, just as for NCHAR
. Oracle Database XE subsequently stores each value in the column exactly as you specify it, if the value does not exceed the maximum length of the column. Oracle Database XE does not pad the string value to the maximum length.
The maximum column size allowed is 4000 characters when the national character set is UTF8, and it is 2000 when AL16UTF16. The maximum length of an NVARCHAR2
column in bytes is 4000. Both the byte limit and the character limit must be met, so the maximum number of characters that is allowed in an NVARCHAR2
column is the number of characters that can be written in 4000 bytes.
In PL/SQL, the maximum length for an NVARCHAR2
variable is 32,767 bytes. You can define NVARCHAR2
variables up to 32,767 characters, but the actual data cannot exceed 32,767 bytes.
The following statement creates a table with one NVARCHAR2
column whose maximum length in characters is 2000 and maximum length in bytes is 4000.
CREATE TABLE table2 (column2 NVARCHAR2(2000));