Использование данных типов char и varchar

В типах данных char и varchar хранятся данные, состоящие из следующих компонентов:

  • Знаки в верхнем и нижнем регистре, например a, b и C.
  • Цифры, например 1, 2 и 3.
  • Специальные знаки, например символ @, знак «и» (&) и восклицательный знак (!).

Данные char или varchar могут быть отдельным знаком или строкой максимальной длиной в 8000 символов для данных char и до 2^31 символов для данных varchar. Типы данных varchar могут принимать две формы. Данные varchar могут быть указанной максимальной длины в знаках, например varchar(6) свидетельствует о том, что в этом типе данных может храниться максимум шесть символов или он может иметь вид varchar(max), увеличивающий максимальное число символов, которые могут храниться в этом типе данных, до 2^31. Дополнительные сведения о varchar(max), см. в разделе Использование типов данных больших значений.

Каждое значение данных char и varchar имеет параметры сортировки. Параметры сортировки определяют такие атрибуты, как набор разрядов, используемый для представления каждого знака, правила сравнения и чувствительность к регистру или акцентированию. Для каждой базы данных существуют параметры сортировки по умолчанию. При определении столбца или указании константы для них назначаются параметры сортировки базы данных по умолчанию, если для них не назначаются особые параметры сортировки с использованием предложения COLLATE. Когда сравниваются или комбинируются два значения char или varchar, имеющих различные параметры сортировки, очередность параметров сортировки определяет, какой режим сопоставления использовать для операции.

Символьные константы должны быть заключены в одинарные (') или двойные кавычки ("). Рекомендуется заключение символьных констант в одинарные кавычки. Заключение символьных констант в двойные кавычки иногда не допускается, если параметру QUOTED IDENTIFIER присвоено значение ON.

Данный пример кода Transact-SQL присваивает символьной переменной значение:

DECLARE @MyCharVar CHAR(25)
SET @MyCharVar = 'Ricardo Adocicados'

Если для выделения символьной константы, содержащей вложенную одинарную кавычку, применяются одинарные кавычки, используйте две одинарные кавычки для представления вложенной одинарной кавычки. Например:

SET @MyCharVar = 'O''Leary'

Если данные, подлежащие хранению, длиннее, чем допустимое число символов, они усекаются. Например, если столбец определен как char(10) и в нем сохраняется значение «Это действительно очень длинная символьная строка», то SQL Server усекает символьную строку до «Это действ».

Тип данных char становится типом данных с фиксированной длиной, если указано предложение NOT NULL. Если в столбец char с предложением NOT NULL вставляется значение короче, чем длина столбца, это значение заполняется вправо при помощи пробелов до размера столбца. Например, если столбец определен как char(10) и в нем должно быть сохранено значение «музыка», SQL Server сохраняет данные в виде «музыка____», где «_» обозначает пробел.

Если ANSI_PADDING установлен на ON при создании столбца char с предложением NULL, он демонстрирует такое же поведение, что и в случае со столбцом char с предложением NOT NULL: значения заполняются вправо до размера столбца. Если ANSI_PADDING установлен на OFF при создании столбца char с предложением NULL, он демонстрирует такое же поведение, что и в случае со столбцом varchar с ANSI_PADDING, установленным на OFF: замыкающие пробелы усекаются.

Тип данных varchar является типом данных переменной длины. Значения короче размера столбца не заполняются вправо до размера столбца. Если параметр ANSI_PADDING был установлен на OFF при создании столбца, усекаются любые замыкающие пробелы в символьных значениях, хранящихся в столбце. Если ANSI_PADDING был установлен на ON при создании столбца, замыкающие пробелы не усекаются.

Способ интерпретации наборов разрядов, хранящихся в байтах символьной строки, основывается на кодовой странице Microsoft SQL Server 2005, указанной в процессе установки. Объект char или varchar может содержать любой знак в кодовой странице SQL Server.

Приложения, использующие драйверы SQL Server ODBC из SQL Server 6.5 или более ранних версий, поддерживают максимум 255 байт символьных данных. Если в SQL Server версии 7.0 или более поздних версиях такие приложения попытаются получить символьные строки или столбцы результирующего набора, содержащие более 255 байт данных, то символьные данные будут усечены до 255 байт.

См. также

Другие ресурсы

Типы данных (Transact-SQL)
Типы char и varchar (Transact-SQL)
Очередность параметров сортировки (Transact-SQL)
SET ANSI_PADDING (Transact-SQL)
sp_dbcmptlevel (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005