In SQL Server gibt es einige Systemkatalogansichten, mit denen Sie eine Liste berechneter Spalten in einer Datenbank abrufen können.
Eine dieser Ansichten heißt sys.computed_columns
. Die andere ist sys.columns
.
Die sys.computed_columns-Ansicht
Die sys.computed_columns
Die Systemkatalogansicht enthält eine Zeile für jede berechnete Spalte in der Datenbank. Daher können Sie eine einfache Abfrage ausführen, um eine Liste der berechneten Spalten zu erhalten.
SELECT OBJECT_NAME(object_id) AS [Parent], name AS [Computed Column], definition, is_persisted FROM sys.computed_columns;
Ergebnis:
+----------+-------------------+--------------------------------------+----------------+ | Parent | Computed Column | definition | is_persisted | |----------+-------------------+--------------------------------------+----------------| | Person | FullName | (concat([FirstName],' ',[LastName])) | 0 | | Products | TotalValue | ([Quantity]*[Price]) | 1 | +----------+-------------------+--------------------------------------+----------------+
Die meisten Spalten dieser Ansicht werden von sys.columns
geerbt Aussicht. Ich habe hier nur eine Handvoll eingefügt.
Einer der Vorteile dieser Ansicht gegenüber sys.columns
, besteht darin, dass es die Definition der berechneten Spalte zurückgibt, was je nach Situation nützlich sein kann. Es enthält auch den is_persisted
-Flag, das Ihnen mitteilt, ob die berechnete Spalte beibehalten wird oder nicht. Wenn die Spalte beibehalten wird, wird der berechnete Wert der Spalte physisch in der Tabelle gespeichert. Wenn nicht, wird sie zum Zeitpunkt der Abfrage der Spalte berechnet.
Die sys.columns-Ansicht
Sie können auch eine Abfrage für sys.columns
ausführen um berechnete Spalten zurückzugeben. In diesem Fall müssen Sie die Ergebnisse so filtern, dass sie nur berechnete Spalten enthalten. Sie können dies mit einem WHERE
tun -Klausel auf is_computed
Spalte.
Beispiel:
SELECT OBJECT_NAME(object_id) as Parent, name AS [Computed Column] FROM sys.columns WHERE is_computed = 1;
Ergebnis:
+----------+-------------------+ | Parent | Computed Column | |----------+-------------------| | Person | FullName | | Products | TotalValue | +----------+-------------------+
Diese Ansicht enthält nicht die definition
, is_persisted
, oder die uses_database_collation
Spalten, die sys.computed_columns
sind enthält.