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

SQL-forespørgsel for at finde et kolonnenavn i hele databasen

Så hvis du bruger SQL Server, kan du køre dette for at finde alle kolonnerne i alle tabellerne.

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

Ved at bruge outputtet fra denne forespørgsel opretter du en liste over alle mulige kombinationer af SELECTS for hver kolonne i hver tabel.

Dette udsender bare listen over alle kommandoer, nu skal du udføre dem. For at udføre hver kommando skal du oprette en markør, der vil gå over hele listen over resultater.

Du kommer til at omgive den forrige SELECT sætning med en markør for at gå over hver forespørgsel og udføre den. Dermed bliver koden sådan noget her

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. Hvordan matcher man én karakter i MySQL i stedet for %?

  2. Samlet strengforbindelse i Oracle 10g

  3. Fejl under brug af INSERT INTO table ON DUPLICATE KEY, ved brug af et for loop-array

  4. Betinget INDSÆT I MySQL - HVOR IKKE FINDER