2013-11-27 1 views
2

Я знаю, что можно выбрать таблицы, которые содержат определенное имя столбца с запросом типа:SQL Server 2008: найти все таблицы, содержащие столбцы с указанным именем

SELECT t.name, 
     c.name 
FROM sys.tables t 
INNER JOIN sys.columns c 
    ON c.object_id=t.object_id 
WHERE c.name like '%colname%' 

Есть ли способ, чтобы найти таблицы которые содержат 2 или более заданных столбцов?

Чтобы привести пример, то, что я хочу найти, это все таблицы, которые имеют конкретные столбцы: ученик и учитель.

ответ

6

Группа по содержанию, которое является уникальным и подсчитывают содержание группы в having п

 
select t.name 
from sys.tables t 
inner join sys.columns c on c.object_id=t.object_id 
where c.name in ('student','teacher') 
group by t.name 
having count(distinct c.name) = 2 
4

К примеру, у меня есть база данных с именем Организация. У меня есть более одной таблицы, где tax_id столбец присутствует.

В большинстве случаев мы должны найти такой столбец из всей базы данных. Решение приводится ниже:

select table_name,column_name from information_schema.columns 
where column_name like '%tax%' 

Существует независимо от того, в запросе на имя базы данных, которые когда-либо вам просто нужно изменить готовы Column Name и нашел требуемый результат

Поиск любое значение Подобно компьютеру во всей базе данных, в столбце и в которых существуют значения стоимости компьютера

Для этого сначала нам нужно написать процедуру хранения, затем мы повторно ее используем для нашего поиска я получил от http://vyaskn.tripod.com/search_all_columns_in_all_tables.htm очень прекрасный результат. После выполнения процедуры хранения мы получили требуемый результат, как показано ниже. Изображение, показывающее полный результат поиска ключевого слова компьютер из всей базы данных. Image showing complete search result of keyword computer from whole database

Смежные вопросы