Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment obtenir la définition d'une colonne calculée dans SQL Server à l'aide de T-SQL

Dans SQL Server, vous pouvez utiliser T-SQL pour obtenir la définition d'une colonne calculée en interrogeant sys.computed_columns vue du catalogue système.

Exemple 1 : Renvoyer une colonne calculée

Voici un exemple que j'ai exécuté dans mon environnement de test. Dans ce cas, j'ai réduit les résultats à une seule colonne calculée.

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

Résultat :

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

Si vous avez plusieurs colonnes calculées portant le même nom, vous pouvez également ajouter le nom de la table au WHERE clause :

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

Exemple 2 - Renvoyer toutes les colonnes calculées

Dans cet exemple, je renvoie toutes les colonnes calculées, ainsi que leur définition.

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

Résultat :

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

Exemple 3 - Inclure le schéma

Dans cet exemple, je joins avec sys.objects pour inclure le schéma dans les résultats.

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;

Résultat :

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