Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Връщане на списък с изчислени колони в SQL Server

В SQL Server има няколко изгледа на системен каталог, които ви позволяват да получите списък с изчислени колони в база данни.

Един от тези изгледи се нарича sys.computed_columns . Другият е sys.columns .

Изгледът sys.computed_columns

sys.computed_columns изгледът на системния каталог съдържа един ред за всяка изчислена колона в базата данни. Следователно можете да изпълните проста заявка, за да получите списък с изчислени колони.

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

Резултат:

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

Повечето от колоните на този изглед са наследени от sys.columns изглед. Тук включих само шепа.

Едно от предимствата на този изглед пред sys.columns , е, че връща дефиницията на изчислената колона, което може да бъде полезно в зависимост от ситуацията. Той също така включва is_persisted флаг, който ви казва дали изчислената колона се запазва или не. Ако колоната се запази, изчислената стойност на колоната се съхранява физически в таблицата. Ако не, то се изчислява в момента, в който заявите колоната.

Изгледът sys.columns

Можете също да изпълните заявка срещу sys.columns за връщане на изчислени колони. Ако направите това, ще трябва да филтрирате резултатите, така че да включват само изчислени колони. Можете да направите това с WHERE клауза на is_computed колона.

Пример:

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

Резултат:

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

Този изглед не съдържа definition , is_persisted , или uses_database_collation колони, които sys.computed_columns съдържа.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как OBJECTPROPERTY() работи в SQL Server

  2. Връщане на информация за колона от свързан сървър в SQL Server (T-SQL примери)

  3. Не може да се зареди SqlServerSpatial.dll

  4. Какво наистина прави методът Statement.setFetchSize(nSize) в JDBC драйвер на SQL Server?

  5. Заявка за актуализиране на SQL с помощта на съединения