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