Использовать метаданные таблицы для оператора select в SQL Server? - PullRequest
3 голосов
/ 26 августа 2008

У меня большая база данных, и я хотел бы выбрать имена таблиц с определенным именем столбца. Я сделал что-то подобное в MySQL, но не могу найти информацию о SQL Server.

Я хочу сделать что-то вроде:

select [table] 
from [db] 
where table [has column 'classtypeid']

Как я могу сделать что-то подобное?

Ответы [ 2 ]

5 голосов
/ 26 августа 2008

Используйте представления ANSI information_schema, это также будет работать в MySQL

select table_name 
from information_schema.columns 
where column_name = 'classtypeid'
2 голосов
/ 26 августа 2008

Вот, пожалуйста:

SELECT C.TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS AS C
  INNER JOIN INFORMATION_SCHEMA.TABLES AS T ON C.TABLE_NAME = T.TABLE_NAME
    AND C.TABLE_SCHEMA = T.TABLE_SCHEMA
WHERE C.COLUMN_NAME = 'classtypeid'
  AND T.TABLE_TYPE = 'BASE TABLE'

Редактировать : обратите внимание, что в этом списке не отображаются представления на основе каких-либо таблиц с этим столбцом. Если вы только запросите INFORMATION_SCHEMA.COLUMNS, вы также вернетесь назад.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...