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

Obtenga el nombre de una columna de su ID en SQL Server:COL_NAME()

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 |
+----------------------+-----------------------+------------+