In SQL Server sono disponibili un paio di visualizzazioni del catalogo di sistema che consentono di ottenere un elenco di colonne calcolate in un database.
Una di queste viste si chiama sys.computed_columns
. L'altro è sys.columns
.
La vista sys.computed_columns
Le sys.computed_columns
la vista del catalogo di sistema contiene una riga per ogni colonna calcolata nel database. Pertanto, puoi eseguire una semplice query per ottenere un elenco di colonne calcolate.
SELECT OBJECT_NAME(object_id) AS [Parent], name AS [Computed Column], definition, is_persisted FROM sys.computed_columns;
Risultato:
+----------+-------------------+--------------------------------------+----------------+ | Parent | Computed Column | definition | is_persisted | |----------+-------------------+--------------------------------------+----------------| | Person | FullName | (concat([FirstName],' ',[LastName])) | 0 | | Products | TotalValue | ([Quantity]*[Price]) | 1 | +----------+-------------------+--------------------------------------+----------------+
La maggior parte delle colonne di questa vista vengono ereditate da sys.columns
Visualizza. Ne ho incluso solo una manciata qui.
Uno dei vantaggi di questa visualizzazione su sys.columns
, è che restituisce la definizione della colonna calcolata, che può essere utile a seconda della situazione. Include anche is_persisted
flag, che indica se la colonna calcolata è persistente o meno. Se la colonna è persistente, il valore calcolato della colonna viene archiviato fisicamente nella tabella. In caso contrario, viene calcolato nel momento in cui esegui la query sulla colonna.
La vista sys.columns
Puoi anche eseguire una query su sys.columns
per restituire colonne calcolate. Se lo fai, dovrai filtrare i risultati per includere solo le colonne calcolate. Puoi farlo con un WHERE
clausola su is_computed
colonna.
Esempio:
SELECT OBJECT_NAME(object_id) as Parent, name AS [Computed Column] FROM sys.columns WHERE is_computed = 1;
Risultato:
+----------+-------------------+ | Parent | Computed Column | |----------+-------------------| | Person | FullName | | Products | TotalValue | +----------+-------------------+
Questa vista non contiene la definition
, is_persisted
o il uses_database_collation
colonne che sys.computed_columns
contiene.