Udostępnij za pośrednictwem


sql_variant (języka Transact-SQL)

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

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

sql_variant

Uwagi

sql_variantmożna w kolumnach, parametry, zmiennych i wartości zwracane funkcji zdefiniowanych przez użytkownika.sql_variantWłącza te obiekty bazy danych do obsługi wartości innych typów danych.

kolumna typu sql_variant może zawierać wiersze danych różnych typów.Na przykład kolumna zdefiniowane jako sql_variant można przechowywać int, binary, i char wartości.W poniższej tabela wymieniono 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

Typy zdefiniowane przez użytkownika

sql_variantmoże mieć maksymalną długość 8016 bajtów.Obejmuje to informacje o typie bazowym i wartości typu podstawowego.Maksymalna długość wartości rzeczywiste typ podstawowy jest 8000 bajtów.

A sql_variant Typ danych muszą być najpierw oddane na wartość podstawowy typ danych przed uczestniczących w operacjach, takich jak dodawanie i odejmowanie.

sql_variantmoż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 skojarzony typ bazowy.Ponadto sql_variant nie może mieć inną sql_variant jako jego typ bazowy.

A unikatowe, podstawowy lub klucz obcy może zawierać kolumny typu sql_variant, ale całkowita długość wartości danych, wchodzące w skład klucz określonego wiersza nie powinny być więcej niż maksymalną długość indeks.Jest to 900 bajtów.

tabela może zawierać dowolną liczbę sql_variant kolumny.

sql_variantnie można używać w CONTAINSTABLE i FREETEXTTABLE.

ODBC nie obsługuje w pełni sql_variant.Dlatego też kwerendy o sql_variant kolumn są zwracane jako dane binarne podczas używania dostawcy Microsoft OLE DB dla ODBC (MSDASQL).Na przykład sql_variant kolumna , która zawiera dane ciąg znaków "ps2091" są zwracane jako 0x505332303931.

Porównanie wartości typu sql_variant

sql_variant Typ danych należy do góry listy hierarchii typów danych do konwersji.Dla sql_variant porównań, SQL Server Kolejność hierarchii typu danych są pogrupowane w danych typu rodzin.

Hierarchia typów danych

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żone numeryczne

real

Przybliżone numeryczne

decimal

Dokładne liczbowe

money

Dokładne liczbowe

smallmoney

Dokładne liczbowe

bigint

Dokładne liczbowe

int

Dokładne liczbowe

smallint

Dokładne liczbowe

tinyint

Dokładne liczbowe

bit

Dokładne liczbowe

nvarchar

Unicode

nchar

Unicode

varchar

Unicode

char

Unicode

varbinary

Wartość binarna

binary

Wartość binarna

uniqueidentifier

Uniqueidentifier

Następujące zasady stosuje się do sql_variant porównania:

  • Gdy sql_variant są porównywane wartości różnych podstawowych typów danych i typy danych podstawowych są w różnych danych typu rodzin, wartość, której typ danych, systemów z rodziny jest wyżej w hierarchii jest uważany za większej z dwóch wartości.

  • Gdy sql_variant są porównywane wartości różnych podstawowych typów danych i typy danych podstawowych są w tej samej rodziny typu danych, wartość, której podstawowy typ danych jest niższa w hierarchii jest niejawnie konwertować na typ danych i następnie dokonywania porównania.

  • Gdy sql_variant wartości char, varchar, nchar, lub nvarchar typy danych są porównywane, ich ustawienia sortowania są najpierw porównywane na podstawie następujących kryteriów: Identyfikator LCID, wersjaLCID, porównanie flagi i sortowaniaKażdy z tych kryteriów są porównywane jako wartości całkowite, a w określonej kolejności.Jeśli wszystkie te kryteria są równe, zgodnie z sortowaniesą porównywane wartości rzeczywiste ciąg .