本教程向您介紹了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
之間的區別。