Тип данных SQL Server CHAR

В этом руководстве вы узнаете, как использовать тип данных SQL Server CHAR для хранения в базе данных строк символов фиксированной длины, отличных от Unicode.

Обзор типа данных CHAR в SQL Server

Если вы хотите сохранить строковые данные фиксированной длины, отличные от Unicode, используйте тип данных CHAR SQL Server:

CHAR(n)

В этом синтаксисе n указывает длину строки, которая находится в диапазоне от 1 до 8000.

Поскольку n является необязательным, если оно не указано в определении данных или операторе объявления переменной, его значением по умолчанию будет 1.

Тип данных CHAR следует использовать только в том случае, если размеры значений в столбце фиксированы.

При вставке строкового значения в столбец CHAR. Если длина строкового значения меньше длины, указанной в столбце, SQL Server добавит конечные пробелы к строковому значению до длины, объявленной в столбце. Однако при выборе этого строкового значения SQL Server удаляет конечные пробелы перед его возвратом.

С другой стороны, если вставить значение, длина которого превышает длину столбца, SQL Server выдаст сообщение об ошибке.

Обратите внимание, что синонимом ISO для CHAR является CHARACTER, поэтому их можно использовать взаимозаменяемо.

Пример типа данных CHAR для SQL Server

Следующий оператор создает новую таблицу, содержащую столбец CHAR:

CREATE TABLE test.sql_server_char(
    val CHAR(3)
);

Обратите внимание: если в базе данных нет тестовой схемы, вы можете создать ее, используя следующий оператор перед созданием таблицы 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.

Следующий оператор вставляет один символ в столбец val таблицы test.sql_server_char:

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;

SQL сервер символ

Несмотря на то, что символ «А» является всего лишь одним символом, количество байтов столбца фиксировано и равно трем.

В этом руководстве вы узнали, как использовать тип данных SQL Server CHAR для хранения в базе данных строк символов фиксированной длины, отличных от Unicode.

Мирослав С.

Автор статей, ИБ-специалист