Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Obter o nome de uma coluna de seu ID no SQL Server:COL_NAME()


No SQL Server, você pode usar o COL_NAME() função para retornar o nome de uma coluna, com base em seu ID e seu ID de tabela pai.

Isso pode ser útil ao consultar uma tabela que armazena apenas o ID da coluna e o ID da tabela pai.

O COL_NAME() A função requer dois argumentos:o ID da tabela e o ID da coluna.


Sintaxe


A sintaxe fica assim:
COL_NAME ( table_id , column_id )

Exemplo 1 – Uso básico


Aqui está um exemplo básico para demonstrar como funciona.
SELECT COL_NAME(885578193, 1) AS Result;

Resultado:
+----------+
| Result   |
|----------|
| ArtistId |
+----------+

Nesse caso, retornei o nome da coluna 1 da tabela com um ID de 885578193.

Exemplo 2 – Obter o ID da tabela


Se você souber apenas o nome da tabela, poderá usar OBJECT_ID() para retornar seu ID com base no nome da tabela.

Acontece que eu sei o nome da tabela acima, então eu poderia mudar o exemplo anterior para isso:
SELECT COL_NAME(OBJECT_ID('dbo.Artists'), 1) AS Result;

Resultado:
+----------+
| Result   |
|----------|
| ArtistId |
+----------+

Aqui está novamente, mas com o ID da tabela incluído:
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      |
+------------+---------------+

Exemplo 3 – Mais colunas


Aqui, adiciono mais algumas colunas à saída.
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  |
+------------+------------+------------+------------+

Exemplo 4 – Verificando dependências


Aqui está um exemplo onde eu uso COL_NAME() em uma consulta que verifica o sys.sql_expression_dependencies visão do sistema para informações de dependência. Esta visualização retorna os IDs das colunas em vez de seus nomes, então eu uso COL_NAME() para obter seus nomes.
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 |
+----------------------+-----------------------+------------+

Exemplo 5 - Em uma cláusula WHERE


Aqui, eu uso o COL_NAME() função em um WHERE cláusula para que as linhas com um referenced_minor_id de NULL não são devolvidos.
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 |
+----------------------+-----------------------+------------+