Estoy probando dos métodos para mostrar las columnas con un nombre en particular:
INFORMATION_SCHEMA.COLUMNS
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME='SUPPLIER_NAME';
SYS.COLUMNS
SELECT * FROM SYS.COLUMNS WHERE NAME='SUPPLIER_NAME'
¿Por qué las consultas muestran resultados diferentes?
sql-server
Vinoth _S
fuente
fuente
INFORMATION_SCHEMA.COLUMNS
es solo una vista sobresys.columns
eseINNER JOIN
ssys.objects
y se restringe a los tipos de objeto de Tabla o Vista. Supongo que uno de sus registrossys.columns
se elimina en esta restricción.Respuestas:
La diferencia entre
INFORMATION_SCHEMA.COLUMNS
ysys.columns
es el tipo de objeto que cubren.INFORMATION_SCHEMA.COLUMNS
está restringido a tablas y vistas. Puedes echar un vistazo al código detrás de esto haciendo esto:Si miras la parte inferior de la cláusula where, verás
Aquí es donde está restringido solo a las tablas y vistas.
Si luego observa la definición de sys.columns, verá que incluye columnas para otros objetos:
Ejecute esto y podrá ver cuál es el objeto adicional y de qué tipo es.
fuente