SQL_VARIANT_PROPERTY (Transact-SQL)
Gibt den Basisdatentyp und andere Informationen über einen sql_variant-Wert zurück.
Syntax
SQL_VARIANT_PROPERTY ( expression , property )
Argumente
expression
Ein Ausdruck vom Typ sql_variant.property
Enthält den Namen der sql_variant-Eigenschaft, zu der Informationen bereitgestellt werden sollen. property ist vom Datentyp varchar(128) und kann jeden der folgenden Werte annehmen.Wert
Beschreibung
Zurückgegebener Basistyp von sql_variant
BaseType
SQL Server-Datentyp, beispielsweise:
bigint
binary
char
date
datetime
datetime2
datetimeoffset
decimal
float
int
money
nchar
numeric
nvarchar
real
smalldatetime
smallint
smallmoney
time
tinyint
uniqueidentifier
varbinary
varchar
sysname
NULL = Eingabe ist nicht gültig.
Precision
Anzahl der Stellen des numerischen Basisdatentyps:
datetime = 23
smalldatetime = 16
float = 53
real = 24
decimal (p,s) und numeric (p,s) = p
money = 19
smallmoney = 10
bigint = 19
int = 10
smallint = 5
tinyint = 3
bit = 1
Alle sonstigen Typen = 0
int
NULL = Eingabe ist nicht gültig.
Scale
Anzahl der Stellen hinter dem Dezimalkomma des numerischen Basisdatentyps:
decimal (p,s) und numeric (p,s) = s
money und smallmoney = 4
datetime = 3
Alle sonstigen Typen = 0
int
NULL = Eingabe ist nicht gültig.
TotalBytes
Anzahl der Byte, die zum Speichern der Metadaten und der Daten des Werts erforderlich sind. Diese Informationen sind nützlich zum Überprüfen der maximalen Größe einer Datenseite in einer sql_variant-Spalte. Wenn der Wert größer als 900 ist, schlägt die Indexerstellung fehl.
int
NULL = Eingabe ist nicht gültig.
Collation
Stellt die Sortierung des entsprechenden sql_variant-Werts dar.
sysname
NULL = Eingabe ist nicht gültig.
MaxLength
Maximale Länge des Datentyps in Byte. So ist beispielsweise MaxLength von nvarchar(50) gleich 100, MaxLength von int beträgt 4.
int
NULL = Eingabe ist nicht gültig.
Rückgabetypen
sql_variant
Beispiele
Im folgenden Beispiel werden SQL_VARIANT_PROPERTY-Informationen über den colA-Wert 46279.1 abgerufen, wobei colB = 1689 und tableA über colA vom Typ sql_variant und colB verfügt.
CREATE TABLE tableA(colA sql_variant, colB int)
INSERT INTO tableA values ( cast (46279.1 as decimal(8,2)), 1689)
SELECT SQL_VARIANT_PROPERTY(colA,'BaseType') AS 'Base Type',
SQL_VARIANT_PROPERTY(colA,'Precision') AS 'Precision',
SQL_VARIANT_PROPERTY(colA,'Scale') AS 'Scale'
FROM tableA
WHERE colB = 1689
Dies ist das Resultset. Beachten Sie, dass jeder dieser drei Werte vom Datentyp sql_variant ist.
Base Type Precision Scale
--------- --------- -----
decimal 8 2
(1 row(s) affected)