在本教程中,将学习如何使用SQL Server CHAR
数据类型在数据库中存储固定长度的非Unicode字符串。
CHAR数据类型简介
在SQL Server中,如果要存储固定长度的非Unicode字符串数据,请使用CHAR
数据类型:
CHAR(n)
在此语法中,n
指定字符串长度,范围从1
到8000
。
因为n
是可选的,如果不在数据定义或变量声明语句中指定它,则其默认值为1
。
仅当在列中值的大小固定时,才应使用CHAR
数据类型。
将字符串值插入CHAR
列时。 如果字符串值的长度小于列中指定的长度,SQL Server将向字符串值添加尾随空格到列中声明的长度。 但是,当查询选择此字符串值时,SQL Server会在返回之前删除尾随空格。
另一方面,如果插入长度超过列长度的值,SQL Server将发出错误消息。
请注意,CHAR
的ISO同义词是CHARACTER
,可以互换使用它们。
CHAR数据类型示例
以下语句创建一个包含CHAR
列的新表:
CREATE TABLE test.sql_server_char (
val CHAR(3)
);
请注意,如果数据库中没有test
模式,则可以在创建sql_server_char
表之前使用以下语句创建它:
CREATE SCHEMA test;
GO
要将固定长度的字符串插入CHAR
列,请使用INSERT语句,如下所示:
INSERT INTO test.sql_server_char (val)
VALUES
('ABC');
上面语句按预期那样工作。以下语句尝试插入长度超过列长度的新字符串:
INSERT INTO test.sql_server_char (val)
VALUES ('XYZ1');
SQL Server发出以下错误:
String or binary data would be truncated.
The statement has been terminated.
以下语句将单个字符插入test.sql_server_char
表的val
列:
INSERT INTO test.sql_server_char (val)
VALUES
('A');
在SQL Server中,LEN
函数返回指定列中排除尾随空白的字符数,DATALENGTH
函数返回字节数。
请参阅以下语句:
SELECT
val,
LEN(val) len,
DATALENGTH(val) data_length
FROM
sql_server_char;
执行上面查询,得到以下结果:
即使字符“A”
只是一个字符,列的字节数也是固定的,即:3
。
在本教程中,学习了如何使用SQL Server CHAR
数据类型在数据库中存储固定长度的非Unicode字符串。