sql_variant (Transact-SQL)
Typ danych, który przechowuje wartości różnych SQL Server-obsługiwane typy danych.
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.