W SQL Server możesz użyć sys.columns
widok katalogu systemowego, aby zwrócić listę nieobliczonych kolumn z tabeli.
Przez „nieobliczone” rozumiem po prostu kolumny, które nie są kolumnami obliczanymi.
Przykład
Oto przykład do zademonstrowania.
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;
Wynik:
+-------------+-------------+--------------+---------------+ | 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
widok zwraca wiele kolumn, więc zawęziłem je tutaj do zaledwie kilku.
W tym przypadku nazwa tabeli to Products
. Gdybym nie filtrował według tego, otrzymałbym bardzo dużą listę kolumn ze wszystkich tabel (w tym tabel systemowych), widoków, funkcji z wartościami z tabeli itp.
Uwzględniłem is_computed
kolumna tutaj tylko po to, abyś mógł zobaczyć, że te kolumny mają 0
w tej kolumnie.
Zdarza mi się wiedzieć, że ta tabela ma obliczoną kolumnę o nazwie TotalValue
. Oto zapytanie ponownie, ale tym razem zwracające wszystkie kolumny (w tym kolumny obliczone).
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';
Wynik:
+-------------+-------------+--------------+---------------+ | 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 | +-------------+-------------+--------------+---------------+