Estou tentando dois métodos para exibir as colunas com um nome específico:
INFORMATION_SCHEMA.COLUMNS
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME='SUPPLIER_NAME';
SYS.COLUMNS
SELECT * FROM SYS.COLUMNS WHERE NAME='SUPPLIER_NAME'
Por que as consultas exibem saídas diferentes?
sql-server
Vinoth _S
fonte
fonte
INFORMATION_SCHEMA.COLUMNS
é apenas uma vista sobresys.columns
queINNER JOIN
s parasys.objects
e restringe a tipos de objeto de tabela ou exibição. Meu palpite é que um de seus registrossys.columns
é eliminado nesta restrição.Respostas:
A diferença entre
INFORMATION_SCHEMA.COLUMNS
esys.columns
é o tipo de objeto que eles cobrem.INFORMATION_SCHEMA.COLUMNS
é restrito a tabelas e visualizações. Você pode dar uma olhada no código por trás dele, fazendo o seguinte:Se você olhar para o final da cláusula where, verá
É aqui que ele é restrito apenas às tabelas e visualizações.
Se você observar a definição de sys.columns, verá que ela inclui colunas para vários outros objetos:
Execute isso e você poderá ver qual é o objeto extra e que tipo.
fonte