I SQL Server kan du använda sys.columns
systemkatalogvy för att returnera en lista över icke-beräknade kolumner från en tabell.
Med "icke beräknade" menar jag helt enkelt kolumner som inte är beräknade kolumner.
Exempel
Här är ett exempel att visa.
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 returnerar många kolumner, så jag har begränsat dem här till bara en handfull.
I det här fallet är tabellnamnet Products
. Om jag inte filtrerade efter det skulle jag få en mycket stor lista med kolumner från alla tabeller (inklusive systemtabeller), vyer, tabellvärderade funktioner etc.
Jag inkluderade is_computed
kolumn här bara så att du kan se att dessa kolumner har 0
i den kolumnen.
Jag råkar veta att den här tabellen har en beräknad kolumn som heter TotalValue
. Här är frågan igen, men den här gången returnerar alla kolumner (inklusive beräknade kolumner).
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 | +-------------+-------------+--------------+---------------+