В этом руководстве вы узнаете, как использовать тип данных 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;
В этом руководстве вы узнали, как использовать тип данных SQL Server VARCHAR для хранения в базе данных данных переменной длины, отличных от Unicode.