在本教學中,您將瞭解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類型