在本教學中,將學習如何使用SQL Server NVARCHAR
數據類型來存儲可變長度的Unicode字串數據。
NVARCHAR數據類型簡介
SQL Server NVARCHAR
數據類型用於存儲可變長度的Unicode字串數據。 以下是NVARCHAR
的語法:
NVARCHAR(n)
在此語法中,n
定義字串長度,範圍從1
到4000
。 如果未指定字串長度,則其默認值為1
。
聲明NVARCHAR
列的另一種方法是使用以下語法:
NVARCHAR(max)
在此語法中,max
是以位元組為單位的最大存儲大小,即2^31 - 1
個位元組(2GB)。
通常,NVARCHAR
值的實際存儲大小(以位元組為單位)是輸入的字元數加上2
個位元組的兩倍。
NVARCHAR
的ISO同義詞是NATIONAL CHAR VARYING
或NATIONAL CHARACTER VARYING
,因此可以在變數聲明或列數據定義中互換使用它們。
VARCHAR與NVARCHAR比較
下表說明了VARCHAR
和NVARCHAR
數據類型之間的主要區別:
比較項 | VARCHAR | NVARCHAR |
---|---|---|
字元數據類型 | 可變長度的非Unicode字元 | 可變長度,Unicode和非Unicode字元,如:中文,日語和韓語。 |
最大長度 | 最多8000 個字元 |
最多4000 個字元 |
字元大小 | 每個字元佔用1 個位元組 |
每個Unicode/非Unicode字元佔用2 個位元組 |
使用 | 當數據長度為可變或可變長度列且實際數據始終小於容量時使用。 | 僅限存儲,僅在需要Unicode支持時使用,例如:漢字,日語或韓文字符。 |
SQL Server VARCHAR示例
以下語句創建一個包含一個VARCHAR
列的新表:
CREATE TABLE test.sql_server_nvarchar (
val NVARCHAR NOT NULL
);
在此示例中,默認情況下NVARCHAR
列的字串長度為1
。
要更改val
列的字串長度,請使用ALTER TABLE ALTER COLUMN
語句:
ALTER TABLE test.sql_server_Nvarchar
ALTER COLUMN val NVARCHAR (10) NOT NULL;
以下語句將新字串插入test.sql_server_nvarchar
表的val
列:
INSERT INTO test.sql_server_Nvarchar (val)
VALUES
(N'IT研修');
該語句按預期工作,因為字串值的長度小於列定義中定義的字串長度。
以下語句嘗試插入長度大於val
列的字串長度的新字串數據:
NSERT INTO test.sql_server_nvarchar (val)
VALUES
(N'訪問許虎虎學習新技術');
SQL Server發出錯誤並終止了該語句:
要查找存儲在NVARCHAR
列中的值的字元數和存儲大小(以位元組為單位),請使用LEN
和DATALENGTH
函數,如下所示:
SELECT
val,
LEN(val) len,
DATALENGTH(val) data_length
FROM
test.sql_server_nvarchar;
執行上面查詢語句,得到以下結果:
在本教學中,學習了如何使用SQL Server NVARCHAR
數據類型在資料庫中存儲可變長度的Unicode數據。
上一篇:
SQL Server數據類型
下一篇:
SQL Server數據定義