I SQL Server kan du bruge sys.columns
systemkatalogvisning for at returnere en liste over ikke-beregnede kolonner fra en tabel.
Med "ikke-beregnet" mener jeg blot kolonner, der ikke er beregnede kolonner.
Eksempel
Her er et eksempel til at demonstrere.
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;
Resultat:
+-------------+-------------+--------------+---------------+ | Column | Data Type | max_length | is_computed | |-------------+-------------+--------------+---------------| | ProductID | int | 4 | 0 | | ProductName | varchar | 255 | 0 | | Quantity | smallint | 2 | 0 | | Price | money | 8 | 0 | +-------------+-------------+--------------+---------------+
sys.columns
view returnerer mange kolonner, så jeg har indsnævret dem her til kun en håndfuld.
I dette tilfælde er tabelnavnet Products
. Hvis jeg ikke filtrerede efter det, ville jeg få en meget stor liste over kolonner fra alle tabeller (inklusive systemtabeller), visninger, tabelværdierede funktioner osv.
Jeg inkluderede is_computed
kolonne her, bare så du kunne se, at disse kolonner har 0
i den kolonne.
Jeg ved tilfældigvis, at denne tabel har en beregnet kolonne kaldet TotalValue
. Her er forespørgslen igen, men denne gang returnerer alle kolonner (inklusive beregnede kolonner).
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';
Resultat:
+-------------+-------------+--------------+---------------+ | 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 | +-------------+-------------+--------------+---------------+