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]) | +----------+----------+-------------------+--------------------------------------+