Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Gibt den Basisdatentyp aus einem SQL_Variant-Wert in SQL Server zurück

In SQL Server können Sie SQL_VARIANT_PROPERTY() verwenden Funktion, um Informationen zum Basisdatentyp von einer sql_variant zurückzugeben Wert.

Die Funktion akzeptiert zwei Argumente:die sql_variant Wert und die Eigenschaft, für die Informationen bereitgestellt werden sollen.

Beispiel 1 – Grundlegende Verwendung

Hier ist ein Beispiel, das das grundlegende Konzept und die Verwendung demonstriert.

DECLARE @var sql_variant = 'Hey!';
SELECT SQL_VARIANT_PROPERTY(@var, 'BaseType') AS BaseType;

Ergebnis:

+------------+
| BaseType   |
|------------|
| varchar    |
+------------+

In diesem Fall ist der Basistyp varchar .

Folgendes passiert, wenn ich den Wert in einen anderen Typ ändere:

DECLARE @var sql_variant = $1.50;
SELECT SQL_VARIANT_PROPERTY(@var, 'BaseType') AS BaseType;

Ergebnis:

+------------+
| BaseType   |
|------------|
| money      |
+------------+

Diesmal ist der Basistyp Geld .

Beispiel 2 – Andere Eigenschaften

Zum jetzigen Zeitpunkt gibt es sechs mögliche Argumente für diese Funktion. Mit anderen Worten, Sie können Informationen über sechs verschiedene Eigenschaften des übergebenen Werts erhalten.

Hier ist ein Beispiel, das alle sechs verwendet:

DECLARE @var sql_variant = SYSDATETIME();
SELECT 
  SQL_VARIANT_PROPERTY(@var, 'BaseType') AS BaseType,
  SQL_VARIANT_PROPERTY(@var, 'Precision') AS Precision,
  SQL_VARIANT_PROPERTY(@var, 'Scale') AS Scale,
  SQL_VARIANT_PROPERTY(@var, 'TotalBytes') AS TotalBytes,
  SQL_VARIANT_PROPERTY(@var, 'Collation') AS Collation,
  SQL_VARIANT_PROPERTY(@var, 'MaxLength') AS MaxLength;

Ergebnis:

+------------+-------------+---------+--------------+-------------+-------------+
| BaseType   | Precision   | Scale   | TotalBytes   | Collation   | MaxLength   |
|------------+-------------+---------+--------------+-------------+-------------|
| datetime2  | 27          | 7       | 11           | NULL        | 8           |
+------------+-------------+---------+--------------+-------------+-------------+