Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Renvoyer toutes les colonnes non calculées d'une table dans SQL Server

Dans SQL Server, vous pouvez utiliser le sys.columns vue du catalogue système pour renvoyer une liste de colonnes non calculées à partir d'une table.

Par "non calculées", j'entends simplement des colonnes qui ne sont pas des colonnes calculées.

Exemple

Voici un exemple pour illustrer.

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;

Résultat :

+-------------+-------------+--------------+---------------+
| Column      | Data Type   | max_length   | is_computed   |
|-------------+-------------+--------------+---------------|
| ProductID   | int         | 4            | 0             |
| ProductName | varchar     | 255          | 0             |
| Quantity    | smallint    | 2            | 0             |
| Price       | money       | 8            | 0             |
+-------------+-------------+--------------+---------------+

Les sys.columns view renvoie beaucoup de colonnes, je les ai donc réduites ici à une poignée.

Dans ce cas, le nom de la table est Products . Si je ne filtre pas par cela, j'obtiendrai une très grande liste de colonnes de toutes les tables (y compris les tables système), des vues, des fonctions table, etc.

J'ai inclus le is_computed colonne ici juste pour que vous puissiez voir que ces colonnes ont 0 dans cette colonne.

Je sais que cette table a une colonne calculée appelée TotalValue . Voici à nouveau la requête, mais cette fois en renvoyant toutes les colonnes (y compris les colonnes calculées).

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';

Résultat :

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