Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come ottenere la definizione di una colonna calcolata in SQL Server utilizzando T-SQL

In SQL Server puoi usare T-SQL per ottenere la definizione di una colonna calcolata eseguendo una query su sys.computed_columns vista catalogo di sistema.

Esempio 1:restituisce una colonna calcolata

Ecco un esempio che ho eseguito nel mio ambiente di test. In questo caso ho ristretto i risultati a una sola colonna calcolata.

SELECT definition
FROM sys.computed_columns
WHERE name = 'TotalValue';

Risultato:

+----------------------+
| definition           |
|----------------------|
| ([Quantity]*[Price]) |
+----------------------+

Nel caso in cui tu abbia più colonne calcolate con lo stesso nome, puoi anche aggiungere il nome della tabella a WHERE clausola:

SELECT definition
FROM sys.computed_columns
WHERE name = 'TotalValue'
AND OBJECT_NAME(object_id) = 'Products';

Esempio 2 – Restituisci tutte le colonne calcolate

In questo esempio restituisco tutte le colonne calcolate, insieme alla loro definizione.

SELECT 
  OBJECT_NAME(object_id) AS [Table],
  name AS [Computed Column],
  definition
FROM sys.computed_columns;

Risultato:

+----------+-------------------+--------------------------------------+
| Table    | Computed Column   | definition                           |
|----------+-------------------+--------------------------------------|
| Person   | FullName          | (concat([FirstName],' ',[LastName])) |
| Products | TotalValue        | ([Quantity]*[Price])                 |
+----------+-------------------+--------------------------------------+

Esempio 3:includi lo schema

In questo esempio mi unisco a sys.objects per includere lo schema nei risultati.

SELECT 
  SCHEMA_NAME(o.schema_id) AS [Schema],
  OBJECT_NAME(cc.object_id) AS [Table],
  cc.name AS [Computed Column],
  cc.definition
FROM sys.computed_columns cc
INNER JOIN sys.objects o
ON o.object_id = cc.object_id;

Risultato:

+----------+----------+-------------------+--------------------------------------+
| Schema   | Table    | Computed Column   | definition                           |
|----------+----------+-------------------+--------------------------------------|
| dbo      | Person   | FullName          | (concat([FirstName],' ',[LastName])) |
| dbo      | Products | TotalValue        | ([Quantity]*[Price])                 |
+----------+----------+-------------------+--------------------------------------+