In SQL Server können Sie die sys.columns
verwenden Systemkatalogansicht, um eine Liste nicht berechneter Spalten aus einer Tabelle zurückzugeben.
Mit „nicht berechnet“ meine ich einfach Spalten, die keine berechneten Spalten sind.
Beispiel
Hier ist ein Beispiel zur Veranschaulichung.
SELECT name AS [Column], TYPE_NAME(user_type_id) AS [Data Type], max_length, is_computed FROM sys.columns WHERE OBJECT_NAME(object_id) = 'Products' AND is_computed = 0;
Ergebnis:
+-------------+-------------+--------------+---------------+ | Column | Data Type | max_length | is_computed | |-------------+-------------+--------------+---------------| | ProductID | int | 4 | 0 | | ProductName | varchar | 255 | 0 | | Quantity | smallint | 2 | 0 | | Price | money | 8 | 0 | +-------------+-------------+--------------+---------------+
Die sys.columns
view gibt viele Spalten zurück, daher habe ich sie hier auf eine Handvoll eingegrenzt.
In diesem Fall lautet der Tabellenname Products
. Wenn ich nicht danach filtern würde, würde ich eine sehr große Liste von Spalten aus allen Tabellen (einschließlich Systemtabellen), Ansichten, Tabellenwertfunktionen usw. erhalten.
Ich habe is_computed
eingefügt Spalte hier, damit Sie sehen können, dass diese Spalten 0
haben in dieser Spalte.
Ich weiß zufällig, dass diese Tabelle eine berechnete Spalte namens TotalValue
hat . Hier ist die Abfrage noch einmal, aber dieses Mal gibt sie alle Spalten zurück (einschließlich berechneter Spalten).
SELECT name AS [Column], TYPE_NAME(user_type_id) AS [Data Type], max_length, is_computed FROM sys.columns WHERE OBJECT_NAME(object_id) = 'Products';
Ergebnis:
+-------------+-------------+--------------+---------------+ | Column | Data Type | max_length | is_computed | |-------------+-------------+--------------+---------------| | ProductID | int | 4 | 0 | | ProductName | varchar | 255 | 0 | | Quantity | smallint | 2 | 0 | | Price | money | 8 | 0 | | TotalValue | money | 8 | 1 | +-------------+-------------+--------------+---------------+