sql_variant (Transact-SQL)

Ein Datentyp, der Werte verschiedener SQL Server 2005-gestützter Datentypen speichert, ausgenommen text, ntext, image, timestamp und sql_variant.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

sql_variant

Hinweise

sql_variant kann in Spalten, Parametern, Variablen und Rückgabewerten von benutzerdefinierten Funktionen verwendet werden. sql_variant lässt zu, dass diese Datenbankobjekte Werte anderer Datentypen unterstützen.

Eine Spalte vom Datentyp sql_variant enthält möglicherweise Zeilen verschiedener Datentypen. So kann beispielsweise eine als sql_variant definierte Spalte die Werte int, binary und char speichern. In der folgenden Tabelle werden die Typen von Werten aufgelistet, die nicht mithilfe von sql_variant gespeichert werden können:

varchar(max)

  • varbinary(max)

nvarchar(max)

xml

  • text

ntext

  • image

timestamp

  • sql_variant

Benutzerdefinierte Typen

sql_variant kann eine maximale Länge von 8016 Byte besitzen. Dies schließt sowohl die Basistypinformationen als auch den Basistypwert ein. Die maximale Länge des Basistypwertes ist 8.000 Byte.

Ein sql_variant-Datentyp muss zuerst in den Wert seines Basisdatentyps umgewandelt werden, bevor er in Operationen, beispielsweise Addition oder Subtraktion, verwendet werden kann.

sql_variant kann ein Standardwert zugewiesen werden. Dieser Datentyp kann auch NULL als zugrunde liegenden Wert haben, den NULL-Werten ist jedoch kein Basistyp zugeordnet. Darüber hinaus kann sql_variant keinen anderen sql_variant-Datentyp als Basistyp haben.

Eindeutige Schlüssel, Primär- oder Fremdschlüssel können Spalten vom Datentyp sql_variant enthalten. Die Gesamtlänge der Datenwerte, aus denen ein Schlüssel für eine vorhandene Zeile besteht, sollte jedoch die maximale Länge eines Indexes (derzeit 900 Byte) nicht überschreiten.

Eine Tabelle kann eine beliebige Anzahl von sql_variant-Spalten haben.

sql_variant kann nicht in CONTAINSTABLE und FREETEXTTABLE verwendet werden.

ODBC unterstützt sql_variant nicht vollständig. Deshalb werden Abfragen von sql_variant-Spalten bei Verwendung von Microsoft OLE DB-Anbieter für ODBC (MSDASQL) als Binärdaten zurückgegeben. Eine sql_variant-Spalte mit den Zeichenfolgendaten 'PS2091' wird als 0x505332303931 zurückgegeben.

Vergleichen von sql_variant-Werten

Der sql_variant-Datentyp steht im oberen Bereich in der Hierarchieliste der Datentypen für die Konvertierung. Für sql_variant-Vergleiche wird die Reihenfolge der Datentyphierarchie von SQL Server in Datentypfamilien unterteilt.

Datentyphierarchie Datentypfamilie

sql_variant

sql_variant

datetime

Datum und Zeit

smalldatetime

Datum und Zeit

float

Ungefähre numerische Werte

real

Ungefähre numerische Werte

decimal

Genaue numerische Werte

money

Genaue numerische Werte

smallmoney

Genaue numerische Werte

bigint

Genaue numerische Werte

int

Genaue numerische Werte

smallint

Genaue numerische Werte

tinyint

Genaue numerische Werte

bit

Genaue numerische Werte

nvarchar

Unicode

nchar

Unicode

varchar

Unicode

char

Unicode

varbinary

Binär

binary

Binär

uniqueidentifier

Uniqueidentifier

Für sql_variant-Vergleiche gelten die folgenden Regeln:

  • Wenn sql_variant-Werte unterschiedlicher Basisdatentypen verglichen werden und die Basisdatentypen verschiedenen Datentypfamilien angehören, wird der Wert als der höhere eingestuft, dessen Datentypfamilie sich weiter oben in der Hierarchieliste befindet.
  • Wenn sql_variant-Werte unterschiedlicher Basisdatentypen verglichen werden und die Basisdatentypen derselben Datentypfamilie angehören, wird der Wert, dessen Basisdatentyp sich weiter unten in der Hierarchieliste befindet, implizit in den anderen Datentyp konvertiert, und dann wird der Vergleich durchgeführt.
  • Wenn sql_variant-Werte der Datentypen char, varchar, nchar oder nvarchar verglichen werden, werden sie auf der Grundlage folgender Kriterien ausgewertet:LCID, LCID-Version, Vergleichsflags und Sortier-ID. Diese Kriterien werden als ganzzahlige Werte und in der genannten Reihenfolge verglichen.

Siehe auch

Verweis

CAST und CONVERT (Transact-SQL)

Andere Ressourcen

Verwenden von sql_variant-Daten

Hilfe und Informationen

Informationsquellen für SQL Server 2005