Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL заявка за намиране на име на колона в цялата база данни

Така че, ако използвате SQL Server, тогава можете да стартирате това, за да намерите всички колони във всички таблици.

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

Като използвате резултата от тази заявка, вие създавате списък с всички възможни комбинации от SELECTS за всяка колона във всяка таблица.

Това просто извежда списъка с всички команди, сега трябва да ги изпълните. За да изпълните всяка команда, трябва да създадете курсор, който ще премине през целия списък с резултати.

Ще заобиколите предишния SELECT израз с курсор, за да преминете през всяка заявка и да я изпълните. Така кодът става нещо подобно

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. Генериране на дати между периоди от време

  2. Проверете дали даден обект е първичен ключ с OBJECTPROPERTY() в SQL Server

  3. Направете, а не нарушавайте производителността на SQL Server

  4. Има ли StartsWith или Contains в t sql с променливи?

  5. Получаване на определена част от низа в T-SQL