В SQL Server можете да използвате sys.columns
изглед на системния каталог, за да върне списък с неизчислени колони от таблица.
Под „неизчислени“ имам предвид просто колони, които не са изчислени колони.
Пример
Ето пример за демонстрация.
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;
Резултат:
+-------------+-------------+--------------+---------------+ | 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 връща много колони, така че ги стесних тук само до шепа.
В този случай името на таблицата е Products
. Ако не филтрирах по това, щях да получа много голям списък с колони от всички таблици (включително системни таблици), изгледи, функции с таблица и т.н.
Включих is_computed
колона тук, само за да можете да видите, че тези колони имат 0
в тази колона.
Случайно знам, че тази таблица има изчислена колона, наречена TotalValue
. Ето отново заявката, но този път връща всички колони (включително изчислените).
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';
Резултат:
+-------------+-------------+--------------+---------------+ | 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 | +-------------+-------------+--------------+---------------+