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

Consulta SQL para encontrar um nome de coluna em todo o banco de dados


Portanto, se você estiver usando o SQL Server, poderá executá-lo para localizar todas as colunas em todas as tabelas.
select
    'SELECT * FROM ' 
     + st.name + 
     ' WHERE ' + 
       sc.name + ' = ''MICROSOFT'' '
from sys.tables st join sys.columns sc on st.object_id = sc.object_id

Usando a saída dessa consulta, você cria uma lista de todas as combinações possíveis de SELECTS para cada coluna em cada tabela.

Isso apenas exibe a lista de todos os comandos, agora você precisa executá-los. Para executar cada comando, você deve criar um cursor que percorrerá toda a lista de resultados.

Você vai cercar o SELECT anterior instrução com um cursor para percorrer cada consulta e executá-la. Assim, o código se torna algo assim
DECLARE @myCommand VARCHAR(1000)

DECLARE c CURSOR READ_ONLY FAST_FORWARD FOR
    select
        'SELECT * FROM ' 
         + st.name + 
         ' WHERE ' + 
           sc.name + ' = ''MICROSOFT'' '
    from sys.tables st join sys.columns sc on st.object_id = sc.object_id
OPEN c

FETCH NEXT FROM c INTO @myCommand
WHILE @@FETCH_STATUS = 0
    BEGIN
        sp_executesql @myCommand
    FETCH NEXT FROM c INTO @myCommand
    END

CLOSE c

DEALLOCATE c