Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zapytanie SQL, aby znaleźć nazwę kolumny w całej bazie danych

Tak więc, jeśli używasz SQL Server, możesz uruchomić to, aby znaleźć wszystkie kolumny we wszystkich tabelach.

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

Korzystając z wyników tego zapytania, tworzysz listę wszystkich możliwych kombinacji WYBORÓW dla każdej kolumny w każdej tabeli.

To po prostu wyświetla listę wszystkich poleceń, teraz musisz je wykonać. Aby wykonać każde polecenie, musisz utworzyć kursor, który przejdzie przez całą listę wyników.

Zamierzasz otoczyć poprzedni SELECT instrukcja z kursorem, aby przejść przez każde zapytanie i wykonać je. W ten sposób kod staje się mniej więcej taki

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zwróć wszystkie wiersze z określonej partycji w SQL Server (T-SQL)

  2. Eksportuj tabele (obiekty i dane) na podstawie wybranych kryteriów

  3. Tworzenie widoku z powiązanych tabel podrzędnych

  4. Zezwalaj na znaki specjalne SQL Server 2008

  5. STRING_SPLIT() w SQL Server 2016:kontynuacja nr 2