Поделиться через


sql_variant (Transact-SQL)

Тип данных, хранящий значения различных типов данных, поддерживаемых службой SQL Server.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

sql_variant

Замечания

Тип sql_variant можно использовать в столбцах, параметрах, переменных и возвращаемых значениях определяемых пользователем функций. С помощью типа sql_variant эти объекты базы данных могут поддерживать значения других типов данных.

Столбец типа sql_variant может содержать строки различных типов данных. Например, столбец, определенный как sql_variant, может хранить значения int, binary и char. В следующей таблице перечислены типы значений, которые не могут храниться в типе данных sql_variant.

varchar(max)

varbinary(max)

nvarchar(max)

xml

text

ntext

image

rowversion (timestamp)

sql_variant

geography

hierarchyid

geometry

Определяемые пользователем типы

datetimeoffset

Максимальная длина значения типа sql_variant составляет 8016 байт. Сюда включены структура и значение базового типа. Максимальная длина значения соответствующего базового типа составляет 8 000 байт.

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

Типу данных sql_variant может быть присвоено значение по умолчанию. Этот тип данных в качестве значения может содержать значение NULL, однако значению NULL не будет соответствовать базовый тип. Также тип данных sql_variant не может в качестве базового иметь другой тип данных sql_variant.

Уникальный, первичный или внешний ключ может содержать столбцы типа sql_variant, но общая длина значений данных, составляющих ключ определенной строки, не должна превышать максимальную длину индекса. Эта длина составляет 900 байт.

Таблица может иметь любое количество столбцов типа sql_variant.

Тип sql_variant нельзя использовать в инструкциях CONTAINSTABLE и FREETEXTTABLE.

Протокол ODBC поддерживает тип sql_variant не полностью. Поэтому столбцы типа sql_variant, запрашиваемые через поставщик Microsoft OLE DB для ODBC (MSDASQL), возвращаются в виде двоичных данных. Например, столбец типа sql_variant, содержащий строку «PS2091», возвращается в виде 0x505332303931.

Сравнение значений sql_variant

Тип sql_variant находится на вершине иерархического списка преобразования типов данных. Для сравнения типов sql_variant иерархия типов данных SQL Server сгруппирована в семейства типов данных.

Иерархия типов данных

Семейство типов данных

sql_variant

sql_variant

datetime2

Дата и время

datetimeoffset

Дата и время

datetime

Дата и время

smalldatetime

Дата и время

date

Дата и время

time

Дата и время

float

Приблизительное числовое значение

real

Приблизительное числовое значение

decimal

Точное числовое значение

money

Точное числовое значение

smallmoney

Точное числовое значение

bigint

Точное числовое значение

int

Точное числовое значение

smallint

Точное числовое значение

tinyint

Точное числовое значение

bit

Точное числовое значение

nvarchar

Юникод

nchar

Юникод

varchar

Юникод

char

Юникод

varbinary

Двоичный

binary

Двоичный

uniqueidentifier

Uniqueidentifier

К сравнениям типов sql_variant применяются следующие правила.

  • При сравнении значений sql_variant различных базовых типов данных, находящихся в разных семействах типов данных, большим из двух значений считается то, семейство типа данных которого находится выше в иерархии.

  • При сравнении значений sql_variant различных базовых типов данных, находящихся в одном семействе типов данных, значение, базовый тип данных которого находится ниже в иерархии, неявно приводится к другому типу данных, после чего производится сравнение.

  • При сравнении значений sql_variant типа данных char, varchar, nchar или nvarchar их параметры сортировки сначала сравниваются на основе следующих критериев: код языка, версия кода языка, флаги сравнения и идентификаторы сортировки. Каждый из этих критериев сравнивается как целочисленное значение в приведенном порядке. Если все эти критерии равны, то сами строковые значения сравниваются в соответствии с параметрами сортировки.

См. также

Справочник

Основные понятия