En SQL Server, puede usar COL_NAME()
función para devolver el nombre de una columna, según su ID y su ID de tabla principal.
Esto puede ser útil cuando se consulta una tabla que solo almacena el ID de la columna y el ID de la tabla principal.
El COL_NAME()
La función requiere dos argumentos:el ID de la tabla y el ID de la columna.
Sintaxis
La sintaxis es así:
COL_NAME ( table_id , column_id )
Ejemplo 1:uso básico
Aquí hay un ejemplo básico para demostrar cómo funciona.
SELECT COL_NAME(885578193, 1) AS Result;
Resultado:
+----------+ | Result | |----------| | ArtistId | +----------+
En este caso, devolví el nombre de la columna 1 de la tabla con una ID de 885578193.
Ejemplo 2:obtener el ID de la tabla
Si solo conoce el nombre de la tabla, puede usar OBJECT_ID()
para devolver su ID basado en el nombre de la tabla.
Sé el nombre de la tabla anterior, así que podría cambiar el ejemplo anterior a este:
SELECT COL_NAME(OBJECT_ID('dbo.Artists'), 1) AS Result;
Resultado:
+----------+ | Result | |----------| | ArtistId | +----------+
Aquí está de nuevo, pero con el ID de la tabla incluido:
SELECT OBJECT_ID('dbo.Artists') AS [Table ID], COL_NAME(OBJECT_ID('dbo.Artists'), 1) AS [Column Name];
Resultado:
+------------+---------------+ | Table ID | Column Name | |------------+---------------| | 885578193 | ArtistId | +------------+---------------+
Ejemplo 3:más columnas
Aquí, agrego algunas columnas más a la salida.
SELECT COL_NAME(OBJECT_ID('dbo.Artists'), 1) AS [Column 1], COL_NAME(OBJECT_ID('dbo.Artists'), 2) AS [Column 2], COL_NAME(OBJECT_ID('dbo.Artists'), 3) AS [Column 3], COL_NAME(OBJECT_ID('dbo.Artists'), 4) AS [Column 4];
Resultado:
+------------+------------+------------+------------+ | Column 1 | Column 2 | Column 3 | Column 4 | |------------+------------+------------+------------| | ArtistId | ArtistName | ActiveFrom | CountryId | +------------+------------+------------+------------+
Ejemplo 4:comprobación de dependencias
Aquí hay un ejemplo donde uso COL_NAME()
en una consulta que comprueba las sys.sql_expression_dependencies
vista del sistema para información de dependencia. Esta vista devuelve los ID de columna en lugar de sus nombres, por lo que uso COL_NAME()
para obtener sus nombres.
SELECT OBJECT_NAME(referencing_id) AS [Referencing Entity], referenced_minor_id, COL_NAME(referenced_id, referenced_minor_id) AS [Column] FROM sys.sql_expression_dependencies;
Resultado:
+----------------------+-----------------------+------------+ | Referencing Entity | referenced_minor_id | Column | |----------------------+-----------------------+------------| | uspGetClient | 0 | NULL | | uspGetClient | 0 | NULL | | uspGetOrdersByClient | 0 | NULL | | uspGetOrdersByClient | 0 | NULL | | uspGetOrdersByClient | 0 | NULL | | uspGetAlbumsByArtist | 0 | NULL | | chkClientCode | 1 | ClientCode | +----------------------+-----------------------+------------+
Ejemplo 5:en una cláusula WHERE
Aquí, uso el COL_NAME()
función en un WHERE
cláusula para que las filas con un referenced_minor_id
de NULL
no se devuelven.
SELECT OBJECT_NAME(referencing_id) AS [Referencing Entity], referenced_minor_id, COL_NAME(referenced_id, referenced_minor_id) AS [Column] FROM sys.sql_expression_dependencies WHERE COL_NAME(referenced_id, referenced_minor_id) IS NOT NULL;
Resultado:
+----------------------+-----------------------+------------+ | Referencing Entity | referenced_minor_id | Column | |----------------------+-----------------------+------------| | chkClientCode | 1 | ClientCode | +----------------------+-----------------------+------------+