Те, кто хочет видеть столбцы только из базовых таблиц (не из представлений), должны присоединиться с INFORMATION_SCHEMA.TABLES
. Мне также нравится исключать системную таблицу sysdiagrams
.
Запрос
SELECT
c.TABLE_NAME,
COLUMN_NAME,
DATA_TYPE
FROM
INFORMATION_SCHEMA.COLUMNS AS c
JOIN INFORMATION_SCHEMA.TABLES AS t ON t.TABLE_NAME = c.TABLE_NAME
WHERE
is_nullable = 'YES' AND
TABLE_TYPE = 'BASE TABLE' AND
c.TABLE_NAME != 'sysdiagrams'
ORDER BY
c.TABLE_NAME,
COLUMN_NAME
Если у вас есть повторяющиеся имена таблиц в схемах или каталогах таблиц, вы должны также включить эти поля в объединение, как показано в ответах:
Различение таблиц и представлений в INFORMATION_SCHEMA.COLUMNS .