Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Alle nicht berechneten Spalten aus einer Tabelle in SQL Server zurückgeben

In SQL Server können Sie die sys.columns verwenden Systemkatalogansicht, um eine Liste nicht berechneter Spalten aus einer Tabelle zurückzugeben.

Mit „nicht berechnet“ meine ich einfach Spalten, die keine berechneten Spalten sind.

Beispiel

Hier ist ein Beispiel zur Veranschaulichung.

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;

Ergebnis:

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

Die sys.columns view gibt viele Spalten zurück, daher habe ich sie hier auf eine Handvoll eingegrenzt.

In diesem Fall lautet der Tabellenname Products . Wenn ich nicht danach filtern würde, würde ich eine sehr große Liste von Spalten aus allen Tabellen (einschließlich Systemtabellen), Ansichten, Tabellenwertfunktionen usw. erhalten.

Ich habe is_computed eingefügt Spalte hier, damit Sie sehen können, dass diese Spalten 0 haben in dieser Spalte.

Ich weiß zufällig, dass diese Tabelle eine berechnete Spalte namens TotalValue hat . Hier ist die Abfrage noch einmal, aber dieses Mal gibt sie alle Spalten zurück (einschließlich berechneter Spalten).

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

Ergebnis:

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