在本教程中,将学习如何使用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'易百');
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字符串。
¥ 我要打赏
纠错/补充
收藏
加QQ群啦,易百教程官方技术学习群
注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。