En SQL Server, puede usar sys.columns
vista de catálogo del sistema para devolver una lista de columnas no calculadas de una tabla.
Por "no calculado", simplemente me refiero a columnas que no son columnas calculadas.
Ejemplo
Aquí hay un ejemplo para demostrarlo.
SELECT name AS [Column], TYPE_NAME(user_type_id) AS [Data Type], max_length, is_computed FROM sys.columns WHERE OBJECT_NAME(object_id) = 'Products' AND is_computed = 0;
Resultado:
+-------------+-------------+--------------+---------------+ | Column | Data Type | max_length | is_computed | |-------------+-------------+--------------+---------------| | ProductID | int | 4 | 0 | | ProductName | varchar | 255 | 0 | | Quantity | smallint | 2 | 0 | | Price | money | 8 | 0 | +-------------+-------------+--------------+---------------+
Las sys.columns
view devuelve muchas columnas, por lo que las he reducido aquí a solo unas pocas.
En este caso, el nombre de la tabla es Products
. Si no filtrara por eso, obtendría una lista muy grande de columnas de todas las tablas (incluidas las tablas del sistema), vistas, funciones con valores de tabla, etc.
Incluí el is_computed
columna aquí solo para que pueda ver que estas columnas tienen 0
en esa columna.
Sé que esta tabla tiene una columna calculada llamada TotalValue
. Aquí está la consulta nuevamente, pero esta vez devolviendo todas las columnas (incluidas las columnas calculadas).
SELECT name AS [Column], TYPE_NAME(user_type_id) AS [Data Type], max_length, is_computed FROM sys.columns WHERE OBJECT_NAME(object_id) = 'Products';
Resultado:
+-------------+-------------+--------------+---------------+ | Column | Data Type | max_length | is_computed | |-------------+-------------+--------------+---------------| | ProductID | int | 4 | 0 | | ProductName | varchar | 255 | 0 | | Quantity | smallint | 2 | 0 | | Price | money | 8 | 0 | | TotalValue | money | 8 | 1 | +-------------+-------------+--------------+---------------+