sql_variant (Transact-SQL)

Um tipo de dados que armazena valores de vários tipos de dados suportados do SQL Server.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

sql_variant

Comentários

sql_variant pode ser usado em colunas, parâmetros, variáveis e valores de retorno de funções definidas pelo usuário. sql_variant permite que os objetos desse banco de dados aceitem valores de outros tipos de dados.

Uma coluna do tipo sql_variant pode conter linhas de tipos de dados diferentes. Por exemplo, uma coluna definida como sql_variant pode armazenar int, binarye valores char. A tabela a seguir lista os tipos de valores que não podem ser armazenados usando sql_variant:

varchar(max)

varbinary(max)

nvarchar(max)

xml

text

ntext

image

rowversion (timestamp)

sql_variant

geography

hierarchyid

geometry

Tipos definidos pelo usuário

datetimeoffset

sql_variant pode ter no máximo de 8016 bytes. Isso inclui as informações de tipo base e o valor de tipo base. O tamanho máximo do valor de tipo base atual é 8.000 bytes.

Um tipo de dados sql_variant deve primeiro ser convertido para seu valor de tipo de dados base antes de participar de operações como adição e subtração.

sql_variant pode ser atribuído como um valor padrão. Esse tipo de dados pode também ter NULL como valor subjacente, mas os valores NULL não terão um tipo base associado. Além disso, sql_variant não pode ter outro sql_variant como tipo base.

Uma chave primária exclusiva ou chave estrangeira pode incluir colunas do tipo sql_variant, mas o tamanho total dos valores de dados que constituem a chave de uma linha específica não deve ser superior ao tamanho máximo de um índice. Esse é de 900 bytes.

Uma tabela pode ter qualquer número de colunas sql_variant.

sql_variant não pode ser usado em CONTAINSTABLE e FREETEXTTABLE.

ODBC não aceita sql_variantcompletamente. Desse modo, as consultas de colunassql_variant retornam como valores binários quando você usa o Microsoft OLE DB Provider para ODBC (MSDASQL). Por exemplo, uma coluna sql_variant que contém os dados de cadeia de caracteres 'PS2091' retorna como 0x505332303931.

Comparando valores sql_variant

O tipo de dados sql_variant pertence ao topo da lista de hierarquia de tipo de dados para conversão. Para comparações de sql_variant, a ordem da hierarquia de tipos de dados do SQL Server é agrupada em famílias de tipos de dados.

Hierarquia de tipos de dados

Família de tipos de dados

sql_variant

sql_variant

datetime2

Data e hora

datetimeoffset

Data e hora

datetime

Data e hora

smalldatetime

Data e hora

date

Data e hora

time

Data e hora

float

Numérico aproximado

real

Numérico aproximado

decimal

Numérico exato

money

Numérico exato

smallmoney

Numérico exato

bigint

Numérico exato

int

Numérico exato

smallint

Numérico exato

tinyint

Numérico exato

bit

Numérico exato

nvarchar

Unicode

nchar

Unicode

varchar

Unicode

char

Unicode

varbinary

Binário

binary

Binário

uniqueidentifier

Uniqueidentifier

As regras a seguir se aplicam a comparações sql_variant:

  • Quando valores de sql_variant de diferentes tipos de dados base são comparados e os tipos de dados base estão em diferentes famílias de tipos de dados, o valor cuja família de tipo de dados aparece no topo do gráfico da hierarquia é considerado o mais alto dos dois valores.

  • Quando valores de sql_variant de diferentes tipos de dados base são comparados e os tipos de dados base estão na mesma família de tipos de dados, o valor cujo tipo de dados base estiver na parte mais inferior do gráfico da hierarquia é convertido implicitamente no outro tipo de dados e a comparação é feita.

  • Quando valores de sql_variant dos tipos de dados char, varchar, nchar ou nvarchar são comparados, seus agrupamentos são primeiro comparados com base nos seguintes critérios: LCID, versão do LCID, sinalizadores de comparação e ID de classificação. Todos esses critérios são comparados como valores de inteiro na ordem listada. Se todos esses critérios forem iguais, os valores reais da cadeia de caracteres serão comparados de acordo com o agrupamento.

Consulte também

Referência

Conceitos