J'essaie deux méthodes pour afficher les colonnes avec un nom particulier:
INFORMATION_SCHEMA.COLUMNS
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME='SUPPLIER_NAME';
SYS.COLUMNS
SELECT * FROM SYS.COLUMNS WHERE NAME='SUPPLIER_NAME'
Pourquoi les requêtes affichent-elles des sorties différentes?
sql-server
Vinoth _S
la source
la source
INFORMATION_SCHEMA.COLUMNS
est juste une vue sursys.columns
ceINNER JOIN
s poursys.objects
et restreigne aux seuls types d'objets de table ou la vue. Je suppose que l'un de vos enregistrementssys.columns
est éliminé dans cette restriction.Réponses:
La différence entre
INFORMATION_SCHEMA.COLUMNS
etsys.columns
est le type d'objet qu'ils couvrent.INFORMATION_SCHEMA.COLUMNS
est limité aux tables et aux vues. Vous pouvez jeter un œil au code qui se cache derrière en procédant comme suit:Si vous regardez en bas de la clause where, vous verrez
C'est là qu'il est limité aux tables et aux vues uniquement.
Si vous allez ensuite regarder la définition de sys.columns, vous verrez qu'elle comprend des colonnes pour un certain nombre d'autres objets:
Exécutez ceci et vous pourrez voir quel est l'objet supplémentaire et de quel type il s'agit.
la source