In SQL Server kunt u de sys.columns
systeemcatalogusweergave om een lijst met niet-berekende kolommen uit een tabel te retourneren.
Met "niet-berekend" bedoel ik eenvoudig kolommen die geen berekende kolommen zijn.
Voorbeeld
Hier is een voorbeeld om te demonstreren.
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;
Resultaat:
+-------------+-------------+--------------+---------------+ | Column | Data Type | max_length | is_computed | |-------------+-------------+--------------+---------------| | ProductID | int | 4 | 0 | | ProductName | varchar | 255 | 0 | | Quantity | smallint | 2 | 0 | | Price | money | 8 | 0 | +-------------+-------------+--------------+---------------+
De sys.columns
view geeft veel kolommen terug, dus ik heb ze hier beperkt tot slechts een handvol.
In dit geval is de tabelnaam Products
. Als ik daar niet op zou filteren, zou ik een zeer grote lijst met kolommen krijgen van alle tabellen (inclusief systeemtabellen), weergaven, tabelwaardige functies, enz.
Ik heb de is_computed
. toegevoegd kolom hier zodat u kunt zien dat deze kolommen 0
. hebben in die kolom.
Ik weet toevallig dat deze tabel een berekende kolom heeft met de naam TotalValue
. Hier is de query opnieuw, maar deze keer worden alle kolommen geretourneerd (inclusief berekende kolommen).
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';
Resultaat:
+-------------+-------------+--------------+---------------+ | 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 | +-------------+-------------+--------------+---------------+