Obtener la Lista de Columnas Calculadas en la tabla de Base de datos (SQL Server)
¿Alguno de ustedes sabe cómo obtener la lista de columnas calculadas en una tabla de base de datos de SQL Server?
Encontré 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 hacer esto. Algo que solo devuelve un único conjunto de resultados.
Cualquier ayuda es muy apreciada, ya que está muy mal documentada.
Gracias, Giammarco
3 answers
Seguro-compruebe 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 los desea para una sola 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 versiones posteriores.
ACTUALIZACIÓN: Incluso hay una vista de catálogo del sistema sys.computed_columns
que también contiene la definición (expresión) de la columna calculada, por si acaso se necesita algún tiempo: -)
SELECT * FROM sys.computed_columns
WHERE object_id = OBJECT_ID('YourTableName')
Marc
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-27 18:55:25
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>'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-10 20:11:27
Para SQL Server 2000 la sintaxis es:
SELECT * FROM sys.columns
WHERE is_computed = 1
Y el un 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)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-08 10:06:27