本教學向您介紹了Oracle NVARCHAR2
資料型別,並解釋了NVARCHAR2
和VARCHAR2
之間的區別。
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
資料型別的預設值,也是唯一的長度語意。
以下語句建立一個最大長度為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;
執行上面查詢語句,得到以下結果 -
如結果所示,資料型別程式碼1
是10
個位元組(5
個字元,每個2
個位元組)。
首先,VARCHAR2
的最大大小可以是位元組或字元,而NVARCHAR2
的最大大小只能是字元。 另外,NVARCHAR2
的最大位元組長度取決於組態的國家字元集。
其次,VARCHAR2
列只能將字元儲存在預設字元集中,而NVARCHAR2
則可以儲存幾乎任何字元
以下查詢返回VARCHAR2
資料型別使用的預設字元集。
SELECT
*
FROM
nls_database_parameters
WHERE
parameter = 'NLS_CHARACTERSET';
執行上面查詢語句,得到以下結果 -
在本教學中,您已經了解了Oracle NVARCHAR2
的用法,以及NVARCHAR2
和VARCHAR2
之間的區別。