No SQL Server, você pode usar o
sys.columns
exibição do catálogo do sistema para retornar uma lista de colunas não calculadas de uma tabela. Por “não computado”, quero dizer simplesmente colunas que não são colunas computadas.
Exemplo
Aqui está um exemplo para demonstrar.
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;
Resultado:
+-------------+-------------+--------------+---------------+ | Column | Data Type | max_length | is_computed | |-------------+-------------+--------------+---------------| | ProductID | int | 4 | 0 | | ProductName | varchar | 255 | 0 | | Quantity | smallint | 2 | 0 | | Price | money | 8 | 0 | +-------------+-------------+--------------+---------------+
O
sys.columns
view retorna muitas colunas, então eu as reduzi aqui para apenas um punhado. Neste caso, o nome da tabela é
Products
. Se eu não filtrasse por isso, obteria uma lista muito grande de colunas de todas as tabelas (incluindo tabelas de sistema), exibições, funções com valor de tabela etc. Eu incluí o
is_computed
coluna aqui apenas para que você possa ver que essas colunas têm 0
nessa coluna. Acontece que eu sei que esta tabela tem uma coluna computada chamada
TotalValue
. Aqui está a consulta novamente, mas desta vez retornando todas as colunas (incluindo colunas computadas). 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';
Resultado:
+-------------+-------------+--------------+---------------+ | 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 | +-------------+-------------+--------------+---------------+