sql >> Database teknologi >  >> RDS >> Sqlserver

Returner basisdatatypen fra en SQL_variantværdi i SQL Server

I SQL Server kan du bruge SQL_VARIANT_PROPERTY() funktion til at returnere basisdatatypeoplysninger fra en sql_variant værdi.

Funktionen accepterer to argumenter:sql_varianten værdi, og den ejendom, der skal gives oplysninger om.

Eksempel 1 – Grundlæggende brug

Her er et eksempel, der demonstrerer det grundlæggende koncept og brugen.

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

Resultat:

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

I dette tilfælde er basistypen varchar .

Her er, hvad der sker, hvis jeg ændrer værdien til en anden type:

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

Resultat:

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

Denne gang er basistypen penge .

Eksempel 2 – Andre egenskaber

Når dette skrives, er der seks mulige argumenter for denne funktion. Med andre ord kan du få information om seks forskellige egenskaber ved den beståede værdi.

Her er et eksempel, der bruger alle seks:

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;

Resultat:

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

  1. Hvordan NULLIF() virker i SQL Server

  2. Hvornår skal man bruge Common Table Expression (CTE)

  3. Forståelse af de 3 nøglekarakteristika ved Big Data

  4. Hvordan får man forskel mellem to rækker til et kolonnefelt?