在本教學中,您將了解Oracle NCHAR
資料型別以及NCHAR
和CHAR
之間的區別。
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
將字元儲存在預設字元集中。
以下語句返回由CHAR
使用的預設字元集和由NCHAR
使用的預設國家字元集:
SELECT
*
FROM
nls_database_parameters
WHERE
PARAMETER IN(
'NLS_CHARACTERSET',
'NLS_NCHAR_CHARACTERSET'
);
執行上面查詢語句,得到以下結果(因環境不同而不同) -
在本教學中,您已經了解了Oracle NCHAR
資料型別以及NCHAR
和CHAR
之間的區別。