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数据定义