在本教學中,您將瞭解Oracle NCHAR數據類型以及NCHAR和CHAR之間的區別。
Oracle NCHAR數據類型概述
Oracle NCHAR數據類型用於存儲固定長度的Unicode字元數據。NCHAR的字元集只能是AL16UTF16或UTF8,在資料庫創建時指定為國家字元集。
當使用NCHAR列創建表時,NCHAR列的最大大小始終在字元長度語義中,例如:
CREATE TABLE nchar_demo (
description NCHAR(10)
);
在本例中,description列的最大長度是10個字元。 對於NCHAR列的最大大小,不可能使用位元組長度,如下所示:
description NCHAR(10 BYTE) -- not possible
NCHAR列的最大字節長度取決於當前的國家字元集。 它是每個字元中最大字符長度和最大字節數的乘積。
要查找當前的國家字元集,請使用以下語句:
SELECT
*
FROM
nls_database_parameters
WHERE
PARAMETER = 'NLS_NCHAR_CHARACTERSET';
執行上面查詢語句,得到類似下麵的結果 -
AL16UTF16字元集使用2個位元組存儲一個字元,所以description列的最大字節長度為20個位元組。
Oracle將NCHAR列的最大長度限制為2000位元組。 這意味著一個NCHAR列只能容納2000字元的1位元組字元或1000個字元的2位元組字元。
NCHAR與CHAR比較/區別
首先,NCHAR的最大長度只在字元長度語義上,而CHAR的最大長度可以是字元長度或位元組長度語義。
其次,NCHAR將字元存儲在國家默認字元集中,而CHAR將字元存儲在默認字元集中。
以下語句返回由CHAR使用的默認字元集和由NCHAR使用的默認國家字元集:
SELECT
*
FROM
nls_database_parameters
WHERE
PARAMETER IN(
'NLS_CHARACTERSET',
'NLS_NCHAR_CHARACTERSET'
);
執行上面查詢語句,得到以下結果(因環境不同而不同) -
在本教學中,您已經瞭解了Oracle NCHAR數據類型以及NCHAR和CHAR之間的區別。
上一篇:
Oracle Char類型
下一篇:
Oracle Varchar2類型
