Publicidade

Como pesquisar por tabelas pelo nome da coluna

Compartilhe:
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Bom dia pessoal, hoje vou passar uma dica muito simples e ao mesmo tempo útil em SQL.

Muitas vezes não conhecemos completamente as tabelas e suas colunas em um banco de dados, ou mesmo o banco de dados é muito grande para decorar tudo, e precisamos fazer o relacionamento entre tabelas em uma instrução “select” mas não sabemos quais tabelas possuem as colunas de que precisamos, mas como encontrar estas tabelas?

Muito simples, basta usar o código abaixo:

select c.name AS 'NomeColuna'
      ,t.name AS 'NomeTabela'
from sys.columns c
join sys.tables t on (c.object_id = t.object_id)
where c.name like '%COLUNA%'
order by NomeColuna
        ,NomeTabela;

Onde substituiremos o valor “COLUNA” pelo nome/texto da coluna que queremos procurar e o select retornará todas colunas que possuem o texto “COLUNA” e o respectivo nome das tabelas as quais pertencem.

Notem que usei “%COLUNA%”, com dois curingas para encontrar campos que tenham o texto “COLUNA” em qualquer posição do nome.

Se quisermos que a consulta retorne coluna que iniciem com o texto “COLUNA”, utilizaremos o curinga “%” no final da instrução, dessa forma: “COLUNA%”, e o inverso se aplica para encontrar campos que possuam o termo procurado no final, dessa forma “%COLUNA”.

Podemos ampliar nossa consulta cruzando resultados, por exemplo, quando queremos encontrar a “COLUNA1” e a “COLUNA2” na mesma tabela, podemos usar o código abaixo:

select c.name AS 'NomeColuna'
      ,t.name AS 'NomeTabela'
from sys.columns c
join sys.tables t on (c.object_id = t.object_id)
where c.name like '%COLUNA1%'
      and t.name in (select t.name AS 'NomeTabela'
                     from sys.columns c
                     join sys.tables t on (c.object_id = t.object_id)
                     where c.name like '%COLUNA2%')
order by NomeColuna
        ,NomeTabela

Dessa forma fazemos uma subconsulta dentro de outra, nesse caso fazemos o select da “COLUNA1” baseado no resultado do subselect da consulta da “COLUNA2”, ou seja, depois de já saber todas as tabelas que possuem a “COLUNA2”, usamos estas tabelas para consultar se elas possuem a “COLUNA1” também.

Esse aninhamento de selects pode ser feito quantas vezes quisermos para aumentar mais ainda a precisão da consulta.

Espero que tenha sido útil.

Dúvidas, postem nos comentários aqui abaixo.

 

Abraço

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *