sql >> Database >  >> RDS >> Sqlserver

SQL-query om een ​​kolomnaam in de hele database te vinden

Dus als u SQL Server gebruikt, kunt u dit uitvoeren om alle kolommen in alle tabellen te vinden.

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

Door de uitvoer van deze query te gebruiken, maakt u een lijst van alle mogelijke combinaties van SELECTS voor elke kolom in elke tabel.

Dit geeft alleen de lijst met alle opdrachten weer, nu moet je ze uitvoeren. Om elke opdracht uit te voeren, moet je een cursor maken die over de hele lijst met resultaten gaat.

Je gaat de vorige SELECT . omringen statement met een cursor om over elke query te gaan en deze uit te voeren. Dus de code wordt zoiets als dit

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


  1. Hoe volgnummer in MySQL-queryresultaat te tonen?

  2. Bestaande auth.User-gegevens migreren naar het nieuwe aangepaste gebruikersmodel van Django 1.5?

  3. Een specifieke kolom wordt niet ingevoegd bij het opslaan van een record

  4. SQL Server 2008:ik heb 1000 tabellen, ik moet weten welke tabellen gegevens hebben