V SQL Server můžete použít sys.columns
zobrazení systémového katalogu pro vrácení seznamu nevypočítaných sloupců z tabulky.
Výrazem „nevypočítané“ mám na mysli jednoduše sloupce, které nejsou spočítanými sloupci.
Příklad
Zde je příklad k demonstraci.
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;
Výsledek:
+-------------+-------------+--------------+---------------+ | 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 vrací mnoho sloupců, takže jsem je zde zúžil jen na hrstku.
V tomto případě je název tabulky Products
. Pokud bych podle toho nefiltroval, získal bych velmi velký seznam sloupců ze všech tabulek (včetně systémových tabulek), zobrazení, funkcí s hodnotou tabulky atd.
Zahrnul jsem is_computed
zde jen proto, abyste viděli, že tyto sloupce mají 0
v tomto sloupci.
Náhodou vím, že tato tabulka má vypočítaný sloupec nazvaný TotalValue
. Zde je dotaz znovu, ale tentokrát vrací všechny sloupce (včetně vypočítaných sloupců).
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';
Výsledek:
+-------------+-------------+--------------+---------------+ | 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 | +-------------+-------------+--------------+---------------+