sql >> Databáze >  >> RDS >> Sqlserver

SQL dotaz k vyhledání názvu sloupce v celé databázi

Pokud tedy používáte SQL Server, můžete to spustit, abyste našli všechny sloupce ve všech tabulkách.

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

Pomocí výstupu tohoto dotazu vytvoříte seznam všech možných kombinací SELECTS pro každý sloupec v každé tabulce.

Tím se pouze zobrazí seznam všech příkazů, které nyní musíte provést. Abyste mohli provést každý příkaz, musíte vytvořit kurzor, který bude přecházet přes celý seznam výsledků.

Obklopíte předchozí SELECT příkaz s kurzorem, abyste přešli přes každý dotaz a provedli jej. Kód se tedy stává něčím podobným

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. Django ManyToMany prostřednictvím více databází

  2. Jak přidat indikátor AD/BC k datu v Oracle

  3. Získejte hodnost na základě skóre z neuspořádané databáze MySql, když dostanete uživatelské jméno

  4. Jak vložím datum do mysql jako parametr?