sql >> Databasteknik >  >> RDS >> Sqlserver

Returnera basdatatypen från ett SQL_variantvärde i SQL Server

I SQL Server kan du använda SQL_VARIANT_PROPERTY() funktion för att returnera basdatatypinformation från en sql_variant värde.

Funktionen accepterar två argument:sql_variant värde och den egendom för vilken information ska lämnas.

Exempel 1 – Grundläggande användning

Här är ett exempel som visar det grundläggande konceptet och användningen.

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

Resultat:

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

I det här fallet är bastypen varchar .

Så här händer om jag ändrar värdet till en annan typ:

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

Resultat:

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

Den här gången är bastypen pengar .

Exempel 2 – Andra egenskaper

När detta skrivs finns det sex möjliga argument för denna funktion. Med andra ord kan du få information om sex olika egenskaper hos det godkända värdet.

Här är ett exempel som använder alla sex:

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. Hur man listar tabell främmande nycklar

  2. Heroku psql:FATAL:återstående anslutningsplatser är reserverade för superanvändaranslutningar som inte replikeras

  3. Ett explicit värde för identitetskolumnen i tabellen kan endast anges när en kolumnlista används och IDENTITY_INSERT är PÅ SQL Server

  4. SQL Always On Availability Groups:Datorobjekt