sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo obtener la definición de una columna calculada en SQL Server usando T-SQL

En SQL Server, puede usar T-SQL para obtener la definición de una columna calculada consultando sys.computed_columns vista del catálogo del sistema.

Ejemplo 1:devolver una columna calculada

Aquí hay un ejemplo que ejecuté en mi entorno de prueba. En este caso, reduje los resultados a una sola columna calculada.

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

Resultado:

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

En caso de que tenga varias columnas calculadas con el mismo nombre, también puede agregar el nombre de la tabla a WHERE cláusula:

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

Ejemplo 2:devolver todas las columnas calculadas

En este ejemplo, devuelvo todas las columnas calculadas, junto con su definición.

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

Resultado:

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

Ejemplo 3:incluir el esquema

En este ejemplo me uno con sys.objects para incluir el esquema en los resultados.

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;

Resultado:

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