I SQL Server er der et par systemkatalogvisninger, der giver dig mulighed for at få en liste over beregnede kolonner i en database.
En af disse visninger kaldes sys.computed_columns . Den anden er sys.columns .
Sys.computed_columns-visningen
sys.computed_columns systemkatalogvisningen indeholder en række for hver beregnet kolonne i databasen. Derfor kan du køre en simpel forespørgsel for at få en liste over beregnede kolonner.
SELECT OBJECT_NAME(object_id) AS [Parent], name AS [Computed Column], definition, is_persisted FROM sys.computed_columns;
Resultat:
+----------+-------------------+--------------------------------------+----------------+ | Parent | Computed Column | definition | is_persisted | |----------+-------------------+--------------------------------------+----------------| | Person | FullName | (concat([FirstName],' ',[LastName])) | 0 | | Products | TotalValue | ([Quantity]*[Price]) | 1 | +----------+-------------------+--------------------------------------+----------------+
De fleste af denne visnings kolonner er nedarvet fra sys.columns udsigt. Jeg har kun inkluderet en håndfuld her.
En af fordelene ved denne visning i forhold til sys.columns , er, at den returnerer den beregnede kolonnes definition, hvilket kan være nyttigt afhængigt af situationen. Det inkluderer også is_persisted flag, som fortæller dig, om den beregnede kolonne er vedvarende eller ej. Hvis kolonnen bevares, gemmes kolonnens beregnede værdi fysisk i tabellen. Hvis ikke, beregnes det på det tidspunkt, du forespørger i kolonnen.
Sys.columns View
Du kan også køre en forespørgsel mod sys.columns for at returnere beregnede kolonner. Hvis du gør dette, skal du filtrere resultaterne til kun at inkludere beregnede kolonner. Du kan gøre dette med en WHERE klausul på is_computed kolonne.
Eksempel:
SELECT OBJECT_NAME(object_id) as Parent, name AS [Computed Column] FROM sys.columns WHERE is_computed = 1;
Resultat:
+----------+-------------------+ | Parent | Computed Column | |----------+-------------------| | Person | FullName | | Products | TotalValue | +----------+-------------------+
Denne visning indeholder ikke definition , is_persisted , eller uses_database_collation kolonner, der sys.computed_columns indeholder.