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

3 formas de obtener el tipo de datos de una columna en SQL Server (T-SQL)

Las GUI como SSMS o Azure Data Studio facilitan la visualización del tipo de datos de una columna. Por lo general, es una simple cuestión de navegar a la columna en el explorador de objetos y puede ver el tipo de datos justo al lado de la columna.

Pero si está utilizando T-SQL, deberá ejecutar una consulta.

El information_schema.columns Ver

El information_schema.columns view es una buena opción si simplemente desea el tipo de datos y nada más:

SELECT 
    COLUMN_NAME, 
    DATA_TYPE, 
    CHARACTER_MAXIMUM_LENGTH AS MAX_LENGTH, 
    CHARACTER_OCTET_LENGTH AS OCTET_LENGTH 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'Products' 
AND COLUMN_NAME = 'ProductName';

Resultado de la muestra:

+---------------+-------------+--------------+----------------+
| COLUMN_NAME   | DATA_TYPE   | MAX_LENGTH   | OCTET_LENGTH   |
|---------------+-------------+--------------+----------------|
| ProductName   | varchar     | 255          | 255            |
+---------------+-------------+--------------+----------------+

Reemplazar Products y ProductName con el nombre de tu tabla y columna respectivamente.

OK, devolví un poco más que solo el tipo de datos aquí. Pero puede omitir las otras columnas si es necesario. O puedes agregar más. Por ejemplo, hay columnas que contienen la precisión de la columna en caso de que esté viendo una columna numérica o de fecha y hora.

Puede devolver todas las columnas como esta:

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'Products' 
AND COLUMN_NAME = 'ProductName';

Las sys.columns Ver

Las sys.columns ver es otra opción. Podemos unir esto con sys.tables ver para obtener una columna específica de una tabla específica:

SELECT 
    c.name,
    type_name(c.system_type_id) AS system_type,
    type_name(c.user_type_id) AS user_type,
    c.max_length,
    c.precision,
    c.scale
FROM sys.tables t 
JOIN sys.columns c ON t.object_id = c.object_id
WHERE t.name = 'Products'
AND c.name = 'ProductName';

Resultado de la muestra:

+-------------+---------------+-------------+--------------+-------------+---------+
| name        | system_type   | user_type   | max_length   | precision   | scale   |
|-------------+---------------+-------------+--------------+-------------+---------|
| ProductName | varchar       | varchar     | 255          | 0           | 0       |
+-------------+---------------+-------------+--------------+-------------+---------+

Nuevamente, incluya más o menos columnas según sea necesario.

En este ejemplo, utilicé TYPE_NAME() función para devolver el nombre del tipo de datos, en función de su ID. Esto me salvó de tener que unirme a sys.types mesa.

El sp_help Procedimiento almacenado

El sp_help El procedimiento almacenado puede ser útil si desea obtener más información sobre la tabla.

Este procedimiento almacenado devuelve información sobre un objeto de la base de datos (cualquier objeto enumerado en sys.sysobjects vista de compatibilidad), un tipo de datos definido por el usuario o un tipo de datos:

EXEC sp_help Products;

Esto devuelve una gran cantidad de resultados, por lo que no los enumeraré todos aquí.

Simplemente reemplace Products con el nombre de la tabla u otro objeto sobre el que desea obtener información.

Obtener el tipo de datos de una columna a partir de una consulta

También puede obtener el tipo de datos de las columnas devueltas por una consulta.

Consulte Averiguar el tipo de datos de las columnas devueltas en un conjunto de resultados en SQL Server para obtener más información y ejemplos.