在本教學中,將學習如何使用SQL Server NCHAR
數據類型來存儲固定長度的Unicode字串數據。
要在資料庫中存儲固定長度的Unicode字串數據,請使用SQL Server NCHAR數據類型:
NCHAR(n)
在此語法中,n
指定字串長度,範圍從1
到4000
。 NCHAR
值的存儲大小是n
個位元組的兩倍。
NCHAR
的ISO同義詞是NATIONAL CHAR
和NATIONAL CHARACTER
,因此可以互換使用它們。
與CHAR
數據類型類似,只能使用NCHAR
存儲固定長度的字串。如果數據值的長度是可變的,則應考慮使用VARCHAR
或NVARCHAR
數據類型。
CHAR與NCHAR比較
以下是CHAR
和NCHAR
數據類型之間的主要區別:
CHAR | NCHAR |
---|---|
僅存儲非Unicode字元。 | 以UNICODE UCS-2字元的形式存儲Unicode字元。 |
需要1 個位元組來存儲一個字元。 |
需要2 個位元組來存儲一個字元。 |
存儲大小等於列定義或變數聲明中指定的大小。 | 存儲大小等於列定義或變數聲明中指定的大小的兩倍。 |
最多可存儲8000 個字元。 |
最多可存儲4000個字元。 |
SQL Server NCHAR示例
以下語句是用來創建一個包含一個NCHAR
列的新表:
CREATE TABLE test.sql_server_nchar (
val NCHAR(1) NOT NULL
);
以下INSERT語句將中文漢字:"易"
插入NCHAR
列:
INSERT INTO test.sql_server_nchar (val)
VALUES
(N'易');
請注意,必須在Unicode字串常量前加上字母N
首碼。否則,SQL Server會將字串轉換為數據庫的默認代碼頁,這可能無法識別某些特定的Unicode字元。
如果插入長度大於列定義中指定長度的字串,SQL Server將發出錯誤並終止該語句。
例如,以下語句嘗試將包含兩個字元的字串插入test.sql_server_nchar
表的val
列中:
INSERT INTO test.sql_server_nchar (val)
VALUES
(N'線上789');
SQL Server發出以下錯誤消息:
消息 8152,級別 16,狀態 13,第 1 行
將截斷字串或二進位數據。
語句已終止。
要查找val
列的字元數和位元組數,可以使用LEN
和DATALENGTH
函數,如下所示:
SELECT
val,
len(val) length,
DATALENGTH(val) data_length
FROM
test.sql_server_nchar;
執行上面查詢語句,得到以下結果:
在本教學中,學習了如何使用SQL Server NCHAR
數據類型在資料庫中存儲固定長度的Unicode字串。
上一篇:
SQL Server數據類型
下一篇:
SQL Server數據定義