una - Obtener lista de columnas calculadas en tabla de base de datos(SQL Server)
sql server columna calculada condicional (3)
Para SQL Server 2000, la sintaxis es:
SELECT * FROM sys.columns
WHERE is_computed = 1
Y el poco más útil:
SELECT
sysobjects.name AS TableName,
syscolumns.name AS ColumnName
FROM syscolumns
INNER JOIN sysobjects
ON syscolumns.id = sysobjects.id
AND sysobjects.xtype = ''U'' --User Tables
WHERE syscolumns.iscomputed = 1
salida de muestra:
TableName ColumnName
===================== ==========
BrinksShipmentDetails Total
AdjustmentDetails Total
SoftCountDropDetails Total
CloserDetails Total
OpenerDetails Total
TransferDetails Total
(6 row(s) affected)
¿Alguno de ustedes sabría cómo obtener la lista de columnas calculadas en una tabla de base de datos de SQL Server?
Encontré que sys.sp_help tablename devuelve esta información, pero solo en el conjunto de resultados de secord.
Estoy tratando de averiguar si hay una mejor manera de hacerlo. Algo que solo devuelve un solo conjunto de resultados.
Cualquier ayuda es muy apreciada, ya que está muy mal documentada.
Gracias, Giammarco
Si desea utilizar las vistas INFORMATION_SCHEMA
, intente
SELECT
COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA+''.''+TABLE_NAME),COLUMN_NAME,''IsComputed'')
AS IS_COMPUTED,
*
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME=''<Insert Your Table Name Here>''
Por supuesto, verifique la vista del catálogo del sistema sys.columns
:
SELECT * FROM sys.columns
WHERE is_computed = 1
Esto le da todas las columnas calculadas en esta base de datos.
Si desea que sean solo para una tabla, use esta consulta:
SELECT * FROM sys.columns
WHERE is_computed = 1
AND object_id = OBJECT_ID(''YourTableName'')
Esto funciona en SQL Server 2005 y posteriores.
ACTUALIZACIÓN: incluso hay una vista del catálogo del sistema sys.computed_columns
que también contiene la definición (expresión) de la columna calculada, en caso de que sea necesario algún tiempo :-)
SELECT * FROM sys.computed_columns
WHERE object_id = OBJECT_ID(''YourTableName'')
Bagazo