2015-02-23 3 views
1

Я знаю синтаксис, чтобы получить список всех представлений в базе данных, но как я мог перевернуть это, чтобы показать мне список всех представлений, которые не содержат поля? Например, я хочу видеть все представления, которые не содержат поля Salutation, как бы я это сделал? Это было бы синтаксис я использовал, чтобы получить список всех таблиц в базе данных:Список представлений, не содержащих определенное поле

SET NOCOUNT ON; 

CREATE TABLE T 
    (
    ID INT IDENTITY NOT NULL, 
    VN VARCHAR(1000) 
); 

INSERT INTO T 
      (VN) 
SELECT '[' + C.Table_Catalog + '].[' + C.Table_Schema + '].[' + C.Table_Name + ']' VN 
FROM Information_Schema.Columns C 
     JOIN Information_Schema.Tables T 
     ON C.Table_Catalog = T.Table_Catalog 
      AND C.Table_Schema = T.Table_Schema 
      AND C.Table_Name = T.Table_Name 
WHERE T.Table_Type = 'View' 
GROUP BY '[' + C.Table_Catalog + '].[' + C.Table_Schema + '].[' + C.Table_Name + ']'; 

ответ

3
SELECT QUOTENAME(v.TABLE_CATALOG) + '.' 
     + QUOTENAME(v.TABLE_SCHEMA) + '.' 
     + QUOTENAME(v.TABLE_NAME) 
FROM INFORMATION_SCHEMA.TABLES v 
WHERE NOT EXISTS (SELECT 1 
        FROM INFORMATION_SCHEMA.COLUMNS ic 
        WHERE ic.TABLE_NAME = v.TABLE_NAME 
          AND ic.TABLE_SCHEMA = v.TABLE_SCHEMA 
          AND ic.COLUMN_NAME = 'Salutation') 
     AND v.TABLE_TYPE = 'VIEW' 
+0

Обновлено использовать INFORMATION_SCHEMA. – Xedni