SQL_VARIANT_PROPERTY (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL-Datenbank in Microsoft Fabric
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.
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 sehen Sie das Ergebnis. 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');