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之間的區別。