SQL-сервер VARCHAR

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

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

Тип данных SQL Server VARCHAR используется для хранения строковых данных переменной длины, не в формате Unicode. Ниже показан синтаксис:

VARCHAR(n)

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

Другой способ объявить столбец VARCHAR — использовать следующий синтаксис:

VARCHAR(max)

В этом синтаксисе max определяет максимальный размер хранилища, который составляет 231-1 байт(2 ГБ).

Как правило, размер хранимого значения VARCHAR равен фактической длине хранимых данных плюс 2 байта.

Синонимы ISO для VARCHAR — CHARVARYING или CHARACTERVARYING, поэтому их можно использовать взаимозаменяемо.

Пример VARCHAR для SQL Server

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

CREATE TABLE test.sql_server_varchar(
    val VARCHAR NOT NULL
);

Поскольку мы не указали длину строки столбца val, по умолчанию она равна единице.

Чтобы изменить длину строки столбца val, используйте оператор ALTER TABLE ALTER COLUMN:

ALTER TABLE test.sql_server_varchar 
ALTER COLUMN val VARCHAR(10) NOT NULL;

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

INSERT INTO test.sql_server_varchar(val)
VALUES
   ('SQL Server');

Оператор сработал так, как и ожидалось, поскольку строковое значение имеет длину, равную длине, указанной в определении столбца.

Следующий оператор пытается вставить новую строку данных, длина которой больше длины строки столбца:

INSERT INTO test.sql_server_varchar(val)
VALUES
   ('SQL Server VARCHAR');

SQL Server выдал ошибку и завершил выполнение оператора:

String or binary data would be truncated.
The statement has been terminated.

Чтобы найти количество символов и количество байтов значений, хранящихся в столбце VARCHAR, используйте функции LEN и DATALENGTH, как показано в следующем запросе:

SELECT
    val,
    LEN(val) len,
    DATALENGTH(val) data_length
FROM
    test.sql_server_varchar;

Пример VARCHAR для SQL Server

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

Мирослав С.

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