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

Retornar todas as colunas não computadas de uma tabela no SQL Server


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             |
+-------------+-------------+--------------+---------------+