sql >> Database >  >> RDS >> Sqlserver

Wat is een berekende kolom in SQL Server?

In SQL Server, een berekende kolom is een virtuele kolom die een uitdrukking gebruikt om de waarde ervan te berekenen.

Een berekende kolom gebruikt doorgaans gegevens uit andere kolommen bij de berekening. Als gegevens in een van die kolommen worden bijgewerkt, geeft de berekende kolom automatisch de update weer in de berekening.

Voorbeeld van een berekende kolom

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

In dit voorbeeld is de FullName kolom is een berekende kolom. Het voegt de waarden van de FirstName . samen en LastName kolommen om de volledige naam te berekenen.

Als u zonder de berekende kolom de volledige naam wilt selecteren, moet u zoiets als dit doen:

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

Of u kunt de CONCAT() . gebruiken functie, zoals deze:

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

Elke keer dat u een volledige naam uit de tabel wilt selecteren, moet u de aaneenschakeling in uw zoekopdracht opnemen.

Maar door een berekende kolom zoals die hierboven te gebruiken, kunt u dit doen:

SELECT FullName
FROM Person;

Voordelen van berekende kolommen

Berekende kolommen kunnen tijd besparen bij het schrijven van query's, fouten verminderen en zelfs de prestaties verbeteren.

Berekende kolommen kunnen handig zijn als u merkt dat u herhaaldelijk dezelfde query uitvoert, vooral als die query is gebaseerd op bedrijfsregels die zelden veranderen.

De berekende kolom in het vorige voorbeeld kan ons in de toekomst veel tijd besparen, omdat we niet elke keer de voornaam en achternaam hoeven samen te voegen als we iemands volledige naam willen selecteren.

Voorbeelden van gebruiksscenario's

Voorbeelden van waar een berekende kolom nuttig zou kunnen zijn, zijn onder meer:

  • De leeftijd van een persoon berekenen op basis van hun geboortedatum in een andere kolom
  • Voornaam en achternaam aaneenschakelen, gebaseerd op voornaam in de ene kolom en achternaam in een andere
  • De voorraadwaarde van een product berekenen op basis van het aantal producten op voorraad in de ene kolom en de prijs in een andere
  • Bereken iemands BMI (Body Mass Index), op basis van hun lengte en gewicht in een andere kolom
  • Een kolom 'Rangschikking' maken waarin de rijen worden gerangschikt op basis van waarden in andere kolommen
  • De racetijden van marathonlopers berekenen op basis van hun start- en eindtijd in andere kolommen

Persistentie van berekende kolommen

Een berekende kolom wordt niet fysiek opgeslagen in de tabel, tenzij deze is gemarkeerd als PERSISTED .

Als het niet is een persistente berekende kolom, de berekening zal elke keer plaatsvinden als de tabel wordt geopend.

Als het is een persistente berekende kolom, wordt de berekende waarde fysiek opgeslagen in de tabel. Dit betekent dat het zijn waarde niet elke keer dat u een query uitvoert, hoeft te berekenen. Als gegevens worden bijgewerkt in een van de kolommen waarvoor ze hun waarde afleiden, wordt de waarde van de berekende kolom bijgewerkt en opgeslagen in de tabel. Dit kan helpen bij de prestaties.

Houd er rekening mee dat een berekende kolom alleen kan worden bewaard als deze deterministisch is. Als het niet-deterministisch is, krijg je een foutmelding als je het probeert aan te houden.

Een niet-deterministische kolom is er een die verschillende waarden retourneert, zelfs met dezelfde invoer. Als u bijvoorbeeld de huidige datum in uw berekening gebruikt, is de waarde elke dag anders en wordt deze als niet-deterministisch beschouwd.

Als je gewoon de voornaam en achternaam aaneenvoegt, zou dat bepalend zijn en zou je zo'n kolom kunnen volhouden.

Een berekende kolom maken

U kunt berekende kolommen maken vanuit de SSMS GUI of met Transact-SQL.

In SSMS

In SSMS, terwijl in Table Designer , maak de kolom waarvan u de berekende kolom wilt zijn (of selecteer deze eenvoudig als deze al bestaat), en vervolgens onder de Kolomeigenschappen tabblad, voer uw formule in de Berekende kolomspecificatie eigendom veld.

Maak je geen zorgen over het geven van een gegevenstype aan de berekende kolom - SQL Server geeft het een gegevenstype op basis van je formule.

U kunt ook Ja . selecteren voor Duurt voort als jij het wilt.

T-SQL gebruiken

Zie Een berekende kolom maken in SQL Server met T-SQL voor een voorbeeld van het maken van een berekende kolom met Transact-SQL.


  1. MySQL-query gebruiken om rijen te doorkruisen om een ​​recursieve boom te maken

  2. Gegevens invoegen via een functie met tabelwaarde in SQL Server

  3. Ignition verbinden met Microsoft Access

  4. Hoe krijg ik alleen numerieke kolomwaarden?