Ich versuche zwei Methoden, um die Spalten mit einem bestimmten Namen anzuzeigen:
INFORMATION_SCHEMA.COLUMNS
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME='SUPPLIER_NAME';
SYS.COLUMNS
SELECT * FROM SYS.COLUMNS WHERE NAME='SUPPLIER_NAME'
Warum zeigen die Abfragen unterschiedliche Ausgaben an?
sql-server
Vinoth _S
quelle
quelle
INFORMATION_SCHEMA.COLUMNS
ist nur einen Blick aufsys.columns
dieseINNER JOIN
s zusys.objects
und engt auf Objekttypen der Tabelle oder Ansicht. Ich vermute, dass einer Ihrer Datensätzesys.columns
in dieser Einschränkung beseitigt ist.Antworten:
Der Unterschied zwischen
INFORMATION_SCHEMA.COLUMNS
undsys.columns
besteht in den Objekttypen, die sie abdecken.INFORMATION_SCHEMA.COLUMNS
ist auf Tabellen und Ansichten beschränkt. Sie können sich den Code dahinter ansehen, indem Sie Folgendes tun:Wenn Sie unten in der where-Klausel nachsehen, werden Sie sehen
Hier ist es nur auf die Tabellen und Ansichten beschränkt.
Wenn Sie sich dann die Definition von sys.columns ansehen, werden Sie feststellen, dass sie Spalten für eine Reihe anderer Objekte enthält:
Wenn Sie dies ausführen, können Sie sehen, um welches zusätzliche Objekt es sich handelt und um welchen Typ es sich handelt.
quelle