在本教學中,將學習如何使用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數據定義
