В 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 съдържа.