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