sql >> Base de Datos >  >> RDS >> Sqlserver

Devolver el tipo de datos base de un valor de variante de SQL en SQL Server

En SQL Server, puede usar SQL_VARIANT_PROPERTY() función para devolver información de tipo de datos base de una sql_variant valor.

La función acepta dos argumentos:el sql_variant valor y la propiedad para la cual se debe proporcionar información.

Ejemplo 1:uso básico

Aquí hay un ejemplo que demuestra el concepto básico y el uso.

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

Resultado:

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

En este caso, el tipo base es varchar .

Esto es lo que sucede si cambio el valor a un tipo diferente:

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

Resultado:

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

Esta vez el tipo base es dinero .

Ejemplo 2:otras propiedades

Al escribir estas líneas, hay seis argumentos posibles para esta función. En otras palabras, puede obtener información sobre seis propiedades diferentes del valor pasado.

Aquí hay un ejemplo que usa los seis:

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;

Resultado:

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