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

Какво е изчислена колона в SQL Server?

В SQL Server, изчислена колона е виртуална колона, която използва израз за изчисляване на стойността си.

Изчислената колона обикновено използва данни от други колони в своето изчисление. Ако данните в някоя от тези колони се актуализират, изчислената колона автоматично ще отразява актуализацията в нейното изчисление.

Пример за изчислена колона

+------------+-------------+------------+----------------+
| PersonID   | FirstName   | LastName   | FullName       |
|------------+-------------+------------+----------------|
| 1          | Homer       | Seinfeld   | Homer Seinfeld |
| 2          | Bart        | Costanza   | Bart Costanza  |
| 3          | Marge       | Kramer     | Marge Kramer   |
+------------+-------------+------------+----------------+

В този пример FullName колоната е изчислена колона. Той обединява стойностите от FirstName и LastName колони за изчисляване на пълното име.

Без изчислената колона, ако искате да изберете пълното име, ще трябва да направите нещо подобно:

SELECT FirstName + ' ' + LastName AS FullName
FROM Person;

Или можете да използвате CONCAT() функция, като тази:

SELECT CONCAT(FirstName, ' ', LastName) AS FullName
FROM Person;

Всеки път, когато искате да изберете пълно име от таблицата, ще трябва да включите конкатенацията в заявката си.

Но като използвате изчислена колона като тази по-горе, можете да направите това:

SELECT FullName
FROM Person;

Предимства на изчислените колони

Изчислените колони могат да спестят време при писане на заявки, да намалят грешките и дори да подобрят производителността.

Изчислените колони могат да бъдат полезни, ако откриете, че повтаряте една и съща заявка отново и отново, особено ако тази заявка се основава на бизнес правила, които рядко се променят.

Изчислената колона в предишния пример може да ни спести много време в бъдеще, защото няма да е необходимо да свързваме собственото и фамилното име всеки път, когато искаме да изберем пълното име на някого.

Примери за случаи на употреба

Примери за това, къде една изчислена колона може да бъде полезна, включват:

  • Изчисляване на възрастта на дадено лице въз основа на датата му на раждане в друга колона
  • Свързване на собствено и фамилно име въз основа на това, че собственото име е в една колона, а фамилията в друга
  • Изчисляване на стойността на инвентара на даден продукт въз основа на броя продукти на склад в една колона и цената в друга.
  • Изчислете ИТМ (индекс на телесна маса) на човек въз основа на неговия ръст и тегло в друга колона
  • Създаване на колона „Ранг“, която класира редовете въз основа на стойности в други колони.
  • Изчисляване на времената на състезанието на маратонците въз основа на началния и крайния им час в други колони

Устойчивост на изчислените колони

Изчислена колона не се съхранява физически в таблицата, освен ако не е маркирана PERSISTED .

Ако е не постоянна изчислена колона, изчислението ще се извършва всеки път, когато се осъществи достъп до таблицата.

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

Имайте предвид, че изчислена колона може да бъде запазена само ако е детерминирана. Ако е недетерминиран, ще получите грешка, ако се опитате да я запазите.

недетерминиран колоната е тази, която връща различни стойности дори и с един и същ вход. Например, ако използвате текущата дата във вашето изчисление, стойността ще бъде различна всеки ден и ще се счита за недетерминирана.

Ако просто свързвате собственото и фамилното име, тогава това би било детерминистично и бихте могли да запазите такава колона.

Създаване на изчислена колона

Можете да създавате изчислени колони от SSMS GUI или с Transact-SQL.

В SSMS

В SSMS, докато в Дизайн на таблици , създайте колоната, която искате да бъде изчислената колона (или просто я изберете, ако вече съществува), след това под Свойства на колоната раздел, въведете формулата си в Спецификация на изчислената колона поле за собственост.

Не се притеснявайте да дадете на изчислената колона тип данни – SQL Server ще й даде тип данни въз основа на вашата формула.

Можете също да изберете Да за Е постоянен ако желаете.

Използване на T-SQL

Вижте Създаване на изчислена колона в SQL Server с помощта на T-SQL за пример за създаване на изчислена колона с помощта на Transact-SQL.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да изпълня съхранена процедура веднъж за всеки ред, върнат от заявка?

  2. Където стойност в колона, съдържаща стойности, разделени със запетая

  3. Преструктуриране и реорганизиране на индекса на SQL Server

  4. Код за валидиране на SQL скриптове

  5. Създаване на многоетапна задача за агент на SQL Server (T-SQL)