Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Query SQL per trovare un nome di colonna nel database

Quindi, se stai utilizzando SQL Server, puoi eseguirlo per trovare tutte le colonne in tutte le tabelle.

select
    'SELECT * FROM ' 
     + st.name + 
     ' WHERE ' + 
       sc.name + ' = ''MICROSOFT'' '
from sys.tables st join sys.columns sc on st.object_id = sc.object_id

Utilizzando l'output di questa query crei un elenco di tutte le possibili combinazioni di SELECTS per ogni colonna in ogni tabella.

Questo restituisce solo l'elenco di tutti i comandi, ora devi eseguirli. Per eseguire ogni comando devi creare un cursore che andrà sull'intero elenco dei risultati.

Circonderai il precedente SELECT istruzione con un cursore per scorrere ogni query ed eseguirla. Pertanto, il codice diventa qualcosa del genere

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