SQL Server Nvarchar數據類型

在本教學中,將學習如何使用SQL Server NVARCHAR數據類型來存儲可變長度的Unicode字串數據。

NVARCHAR數據類型簡介

SQL Server NVARCHAR數據類型用於存儲可變長度的Unicode字串數據。 以下是NVARCHAR的語法:

NVARCHAR(n)

在此語法中,n定義字串長度,範圍從14000。 如果未指定字串長度,則其默認值為1

聲明NVARCHAR列的另一種方法是使用以下語法:

NVARCHAR(max)

在此語法中,max是以位元組為單位的最大存儲大小,即2^31 - 1個位元組(2GB)。

通常,NVARCHAR值的實際存儲大小(以位元組為單位)是輸入的字元數加上2個位元組的兩倍。

NVARCHAR的ISO同義詞是NATIONAL CHAR VARYINGNATIONAL CHARACTER VARYING,因此可以在變數聲明或列數據定義中互換使用它們。

VARCHAR與NVARCHAR比較

下表說明了VARCHARNVARCHAR數據類型之間的主要區別:

比較項 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列中的值的字元數和存儲大小(以位元組為單位),請使用LENDATALENGTH函數,如下所示:

SELECT
    val,
    LEN(val) len,
    DATALENGTH(val) data_length
FROM
    test.sql_server_nvarchar;

執行上面查詢語句,得到以下結果:

在本教學中,學習了如何使用SQL Server NVARCHAR數據類型在資料庫中存儲可變長度的Unicode數據。


上一篇: SQL Server數據類型 下一篇: SQL Server數據定義