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

Devolver todas las columnas no calculadas de una tabla en SQL Server

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