在本教程中,将学习如何使用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'易百教程网');
该语句按预期工作,因为字符串值的长度小于列定义中定义的字符串长度。
以下语句尝试插入长度大于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数据。