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