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


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