Oracle NChar類型

在本教學中,您將瞭解Oracle NCHAR數據類型以及NCHARCHAR之間的區別。

Oracle NCHAR數據類型概述

Oracle NCHAR數據類型用於存儲固定長度的Unicode字元數據。NCHAR的字元集只能是AL16UTF16UTF8,在資料庫創建時指定為國家字元集。

當使用NCHAR列創建表時,NCHAR列的最大大小始終在字元長度語義中,例如:

CREATE TABLE nchar_demo (
    description NCHAR(10)
);

在本例中,description列的最大長度是10個字元。 對於NCHAR列的最大大小,不可能使用位元組長度,如下所示:

description NCHAR(10 BYTE) -- not possible

NCHAR列的最大字節長度取決於當前的國家字元集。 它是每個字元中最大字符長度和最大字節數的乘積。

要查找當前的國家字元集,請使用以下語句:

SELECT
    *
FROM
    nls_database_parameters
WHERE
    PARAMETER = 'NLS_NCHAR_CHARACTERSET';

執行上面查詢語句,得到類似下麵的結果 -

AL16UTF16字元集使用2個位元組存儲一個字元,所以description列的最大字節長度為20個位元組。

Oracle將NCHAR列的最大長度限制為2000位元組。 這意味著一個NCHAR列只能容納2000字元的1位元組字元或1000個字元的2位元組字元。

NCHAR與CHAR比較/區別

首先NCHAR的最大長度只在字元長度語義上,而CHAR的最大長度可以是字元長度或位元組長度語義。
其次NCHAR將字元存儲在國家默認字元集中,而CHAR將字元存儲在默認字元集中。

以下語句返回由CHAR使用的默認字元集和由NCHAR使用的默認國家字元集:

SELECT
    *
FROM
    nls_database_parameters
WHERE
    PARAMETER IN(
        'NLS_CHARACTERSET',
        'NLS_NCHAR_CHARACTERSET'
    );

執行上面查詢語句,得到以下結果(因環境不同而不同) -

在本教學中,您已經瞭解了Oracle NCHAR數據類型以及NCHARCHAR之間的區別。


上一篇: Oracle Char類型 下一篇: Oracle Varchar2類型