No SQL Server, há algumas exibições de catálogo do sistema que permitem obter uma lista de colunas computadas em um banco de dados.
Uma dessas visualizações é chamada de
sys.computed_columns
. O outro é sys.columns
. A visualização sys.computed_columns
Os
sys.computed_columns
a exibição do catálogo do sistema contém uma linha para cada coluna computada no banco de dados. Portanto, você pode executar uma consulta simples para obter uma lista de colunas computadas. SELECT OBJECT_NAME(object_id) AS [Parent], name AS [Computed Column], definition, is_persisted FROM sys.computed_columns;
Resultado:
+----------+-------------------+--------------------------------------+----------------+ | Parent | Computed Column | definition | is_persisted | |----------+-------------------+--------------------------------------+----------------| | Person | FullName | (concat([FirstName],' ',[LastName])) | 0 | | Products | TotalValue | ([Quantity]*[Price]) | 1 | +----------+-------------------+--------------------------------------+----------------+
A maioria das colunas desta visualização é herdada do
sys.columns
visualizar. Eu incluí apenas um punhado aqui. Um dos benefícios dessa visualização sobre
sys.columns
, é que ele retorna a definição da coluna computada, que pode ser útil dependendo da situação. Ele também inclui o is_persisted
sinalizador, que informa se a coluna computada é persistente ou não. Se a coluna persistir, o valor calculado da coluna será armazenado fisicamente na tabela. Caso contrário, é calculado no momento em que você consulta a coluna. A visualização sys.columns
Você também pode executar uma consulta em
sys.columns
para retornar colunas computadas. Se você fizer isso, precisará filtrar os resultados para incluir apenas colunas computadas. Você pode fazer isso com um WHERE
cláusula no is_computed
coluna. Exemplo:
SELECT OBJECT_NAME(object_id) as Parent, name AS [Computed Column] FROM sys.columns WHERE is_computed = 1;
Resultado:
+----------+-------------------+ | Parent | Computed Column | |----------+-------------------| | Person | FullName | | Products | TotalValue | +----------+-------------------+
Esta visualização não contém a
definition
, is_persisted
, ou o uses_database_collation
colunas que sys.computed_columns
contém.