sql_variant (Transact-SQL)

Typ danych, który przechowuje wartości różnych SQL Server-obsługiwane typy danych.

Topic link iconKonwencje składni języka Transact-SQL

sql_variant

Remarks

sql_variant can be used in columns, parameters, variables, and the return values of user-defined functions.sql_variant enables these database objects to support values of other data types.

Kolumna typu sql_variant może zawierać wiersze o różnych typach danych. Na przykład kolumna zdefiniowane jako sql_variant mogą być przechowywane int, binary, a char wartości. Poniższa lista przedstawia typy wartości, które nie mogą być przechowywane przy użyciu sql_variant:

varchar(max)

varbinary(max)

nvarchar(max)

xml

text

ntext

image

timestamp

sql_variant

geography

hierarchyid

geometry

W przypadku typów zdefiniowanych przez użytkownika

sql_variant może mieć maksymalną długość 8016 bajtów.Dotyczy to zarówno informacji typu podstawowego, jak i wartości typu podstawowego.Maksymalna długość wartości rzeczywiste typ podstawowy jest 8000 bajtów.

A sql_variant Typ danych musi najpierw można rzutować na wartość podstawowy typ danych przed biorących udział w operacji, takich jak dodawanie i odejmowanie.

sql_variant można przypisać domyślną wartość.Ten typ danych również może mieć wartości NULL jako jego wartości podstawowej, ale wartości NULL nie będzie miał skojarzonego typu podstawowego.Ponadto sql_variant nie może mieć inny sql_variant jako typu podstawowego.

Unikatowy, podstawowy lub obcy klucz może zawierać kolumny typu sql_variant, ale całkowita długość wartości danych, które tworzą klucz określonego wiersza nie powinna być większa niż maksymalna długość indeksu. Jest to 900 bajtów.

Tabela może mieć dowolną liczbę sql_variant kolumny.

sql_variant Nie można używać w CONTAINSTABLE i FREETEXTTABLE.

ODBC nie obsługuje w pełni sql_variant. Dlatego też kwerendy o sql_variant kolumny są zwracane w postaci danych binarnych, używając dostawca Microsoft OLE DB dla ODBC (MSDASQL). Na przykład sql_variant kolumna zawierającej dane ciąg znaków "PS2091" są zwracane jako 0x505332303931.

Porównywanie wartości sql_variant

The sql_variant data type belongs to the top of the data type hierarchy list for conversion.Dla sql_variant polecenie SQL Server kolejność hierarchii typów danych są pogrupowane w rodzinach typu danych.

Typ danych hierarchii

Typ danych rodziny

sql_variant

sql_variant

datetime2

Data i godzina

datetimeoffset

Data i godzina

datetime

Data i godzina

smalldatetime

Data i godzina

date

Data i godzina

time

Data i godzina

float

Przybliżona numeryczne

real

Przybliżona numeryczne

decimal

Dokładny numeryczny

money

Dokładny numeryczny

smallmoney

Dokładny numeryczny

bigint

Dokładny numeryczny

int

Dokładny numeryczny

smallint

Dokładny numeryczny

tinyint

Dokładny numeryczny

bit

Dokładny numeryczny

nvarchar

Unicode

nchar

Unicode

varchar

Unicode

char

Unicode

varbinary

Binary

binary

Binary

uniqueidentifier

Uniqueidentifier

Obowiązują następujące reguły do sql_variant porównania:

  • Kiedy sql_variant wartości typów różne dane podstawowe są porównywane i typy danych podstawowych znajdują się w różnych rodzin typu, wartość, której typ danych, systemów z rodziny jest wyższy w hierarchii wykresu zostanie uznana za większej z dwóch wartości.

  • Kiedy sql_variant wartości typów różne dane podstawowe są porównywane i typy danych podstawowych są w tej samej rodziny typu danych, wartość, której podstawowy typ danych jest niższa na wykresie hierarchii jest niejawnie konwertowane na inny typ danych i porównanie jest przeprowadzane.

  • Kiedy sql_variant wartości char, varchar, nchar, lub nvarchar typy danych są porównywane, ich ustawienia sortowania najpierw są porównywane na podstawie następujących kryteriów: Identyfikator LCID, wersja LCID, flagi porównania i sortować nazwy. Każdy z tych kryteriów są porównywane jako wartości całkowite, a w podanej kolejności.Jeśli wszystkie te kryteria są równe, zgodnie z sortowanie są porównywane wartości rzeczywiste ciąg.