Oracle NVarchar2型別


本教學向您介紹了Oracle NVARCHAR2資料型別,並解釋了NVARCHAR2VARCHAR2之間的區別。

Oracle NVARCHAR2資料型別簡介

NVARCHAR2是可以儲存Unicode字元的Unicode資料型別。 NVARCHAR2的字元集是在資料庫建立時指定的國家字元集。

要在資料庫中查詢NVARCHAR2的字元集,請使用以下查詢:

SELECT
    *
FROM
    nls_database_parameters
WHERE
    PARAMETER = 'NLS_NCHAR_CHARACTERSET';

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

在筆者的Oracle資料庫伺服器中,NVARCHAR2資料型別使用AL16UTF16字元集,它使用UTF-16編碼對Unicode資料進行編碼。AL16UTF16使用2個位元組來儲存一個字元。

NVARCHAR2儲存可變長度的字元資料。 使用NVARCHAR2列建立表時,最大長度始終為字元長度語意,也是NVARCHAR2資料型別的預設值,也是唯一的長度語意。

Oracle NVARCHAR2的例子

以下語句建立一個最大長度為50個字元的NVARCHAR2列的表。

CREATE TABLE nvarchar2_demo (
    description NVARCHAR2(50)
);

由於當前的國家字元集是:UTF-16,所以描述列的最大位元組長度是200位元組。

請注意,最大位元組長度是每個字元中最大字元長度和最大位元組數的乘積。

以下語句在nvarchar2_demo表中插入一行:

INSERT INTO nvarchar2_demo
VALUES('ABCDE');

使用DUMP()函式來檢視儲存在nvarchar2_demo表中的值的詳細資訊:

SELECT
    description,
    DUMP(description,1016)
FROM
    nvarchar2_demo;

執行上面查詢語句,得到以下結果 -

如結果所示,資料型別程式碼110個位元組(5個字元,每個2個位元組)。

VARCHAR2與NVARCHAR2

首先VARCHAR2的最大大小可以是位元組或字元,而NVARCHAR2的最大大小只能是字元。 另外,NVARCHAR2的最大位元組長度取決於組態的國家字元集。

其次,VARCHAR2列只能將字元儲存在預設字元集中,而NVARCHAR2則可以儲存幾乎任何字元

以下查詢返回VARCHAR2資料型別使用的預設字元集。

SELECT
  *
FROM
  nls_database_parameters
WHERE
  parameter = 'NLS_CHARACTERSET';

執行上面查詢語句,得到以下結果 -

在本教學中,您已經了解了Oracle NVARCHAR2的用法,以及NVARCHAR2VARCHAR2之間的區別。