SQL_VARIANT_PROPERTY (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Gibt den Basisdatentyp und andere Informationen über einen sql_variant-Wert zurück.

Transact-SQL-Syntaxkonventionen

Syntax

SQL_VARIANT_PROPERTY ( expression , property )  

Hinweis

Diese Syntax wird vom serverlosen SQL-Pool in Azure Synapse Analytics nicht unterstützt.

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

expression
Ein Ausdruck vom Typ sql_variant.

property
Enthält den Namen der sql_variant-Eigenschaft, für die Informationen bereitgestellt werden sollen. property ist vom Datentyp varchar( 128 ) . Die folgenden Werte sind möglich:

Wert BESCHREIBUNG Zurückgegebener Basistyp von sql_variant
BaseType SQL Server-Datentyp, beispielsweise:

bigint

binary

bit

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.
Genauigkeit Anzahl der Stellen des numerischen Basisdatentyps:

date = 10

datetime = 23

datetime2 = 27

datetime2 (s) = 19, wenn s = 0, sonst s + 20

datetimeoffset = 34

datetimeoffset (s) = 26, wenn s = 0, sonst s + 27

smalldatetime = 16

time = 16

time (s) = 8, wenn s = 0, sonst s + 9

float = 53

real = 24

decimal und numeric = 18

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.
Skalieren Anzahl der Stellen hinter dem Dezimalkomma des numerischen Basisdatentyps:

decimal und numeric = 0

decimal (p,s) und numeric (p,s) = s

money und smallmoney = 4

datetime = 3

datetime2 = 7

datetime2 (s) = s (0 - 7)

datetimeoffset = 7

datetimeoffset (s) = s (0 - 7)

time = 7

time (s) = s (0 - 7)

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.
Sortierung Stellt die Sortierung des entsprechenden sql_variant-Werts dar. sysname

NULL = Eingabe ist nicht gültig.
MaxLength Maximale Länge des Datentyps in Byte. Beispielsweise entspricht MaxLength von nvarchar( 50 ) dem Wert 100, während MaxLength von int dem Wert 4 entspricht. int

NULL = Eingabe ist nicht gültig.

Rückgabetypen

sql_variant

Beispiele

A. Verwenden von „sql_variant“ in einer Tabelle

Dann werden im folgenden Beispiel 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  

Hier 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)  

B. Verwenden von „sql_variant“ als Variable

Im folgenden Beispiel werden SQL_VARIANT_PROPERTY-Informationen über eine Variable namens @v1 abgerufen.

DECLARE @v1 sql_variant;  
SET @v1 = 'ABC';  
SELECT @v1;  
SELECT SQL_VARIANT_PROPERTY(@v1, 'BaseType');  
SELECT SQL_VARIANT_PROPERTY(@v1, 'MaxLength');  

Weitere Informationen

sql_variant (Transact-SQL)