Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zwróć listę obliczonych kolumn w SQL Server

W SQL Server istnieje kilka widoków wykazu systemowego, które umożliwiają uzyskanie listy obliczonych kolumn w bazie danych.

Jeden z tych widoków nazywa się sys.computed_columns . Drugi to sys.columns .

Widok sys.computed_columns

sys.computed_columns widok katalogu systemowego zawiera jeden wiersz dla każdej obliczonej kolumny w bazie danych. Dlatego możesz uruchomić proste zapytanie, aby uzyskać listę obliczonych kolumn.

SELECT 
  OBJECT_NAME(object_id) AS [Parent],
  name AS [Computed Column],
  definition,
  is_persisted
FROM sys.computed_columns;

Wynik:

+----------+-------------------+--------------------------------------+----------------+
| Parent   | Computed Column   | definition                           | is_persisted   |
|----------+-------------------+--------------------------------------+----------------|
| Person   | FullName          | (concat([FirstName],' ',[LastName])) | 0              |
| Products | TotalValue        | ([Quantity]*[Price])                 | 1              |
+----------+-------------------+--------------------------------------+----------------+

Większość kolumn tego widoku jest dziedziczona z sys.columns pogląd. Zamieściłem tutaj tylko garstkę.

Jedna z zalet tego widoku w porównaniu z sys.columns polega na tym, że zwraca definicję kolumny wyliczanej, która może być przydatna w zależności od sytuacji. Zawiera również is_persisted flaga, która informuje, czy wyliczona kolumna jest utrwalana. Jeśli kolumna jest utrwalona, ​​obliczona wartość kolumny jest fizycznie przechowywana w tabeli. Jeśli nie, jest on obliczany w momencie zapytania o kolumnę.

Widok sys.columns

Możesz także uruchomić zapytanie w sys.columns aby zwrócić kolumny obliczeniowe. Jeśli to zrobisz, musisz przefiltrować wyniki, aby uwzględnić tylko kolumny obliczone. Możesz to zrobić za pomocą WHERE klauzula is_computed kolumna.

Przykład:

SELECT 
  OBJECT_NAME(object_id) as Parent,
  name AS [Computed Column]
FROM sys.columns
WHERE is_computed = 1;

Wynik:

+----------+-------------------+
| Parent   | Computed Column   |
|----------+-------------------|
| Person   | FullName          |
| Products | TotalValue        |
+----------+-------------------+

Ten widok nie zawiera definition , is_persisted lub uses_database_collation kolumny, które sys.computed_columns zawiera.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę przekonwertować Sql Server 2008 DateTimeOffset na DateTime?

  2. Co to jest ograniczenie klucza podstawowego w bazie danych programu SQL Server — samouczek SQL Server / T-SQL, część 54

  3. Instalowanie Microsoft SQL Server 2012 Enterprise Edition z dodatkiem Service Pack 1

  4. Jaki jest cel używania OPTION(MAXDOP 1) w SQL Server?

  5. Jak skopiować dane z ogromnej tabeli do innej tabeli w SQL Server