Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Retornar uma lista de colunas computadas no SQL Server


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.