Я пытаюсь двумя способами для отображения столбцов с определенным именем:
INFORMATION_SCHEMA.COLUMNS
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME='SUPPLIER_NAME';
SYS.COLUMNS
SELECT * FROM SYS.COLUMNS WHERE NAME='SUPPLIER_NAME'
Почему запросы показывают разные результаты?
sql-server
Vinoth _S
источник
источник
INFORMATION_SCHEMA.COLUMNS
это просто вид ,sys.columns
чтоINNER JOIN
с кsys.objects
и ограничивает к типам объектов таблицы или представления. Я предполагаю, что одна из ваших записейsys.columns
исключена из этого ограничения.Ответы:
Разница между
INFORMATION_SCHEMA.COLUMNS
иsys.columns
являются типами объектов , они охватывают.INFORMATION_SCHEMA.COLUMNS
ограничен таблицами и представлениями. Вы можете взглянуть на код, стоящий за ним:Если вы посмотрите внизу в предложении, где вы увидите
Здесь он ограничен только таблицами и представлениями.
Если вы затем посмотрите на определение sys.columns, то увидите, что оно включает столбцы для ряда других объектов:
Запустите это, и вы сможете увидеть, что это за дополнительный объект и какого он типа.
источник