SQL Server Char数据类型

在本教程中,将学习如何使用SQL Server CHAR数据类型在数据库中存储固定长度的非Unicode字符串。

CHAR数据类型简介

在SQL Server中,如果要存储固定长度的非Unicode字符串数据,请使用CHAR数据类型:

CHAR(n)

在此语法中,n指定字符串长度,范围从18000
因为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字符串。


上一篇: SQL Server数据类型 下一篇: SQL Server数据定义