sql >> Databáze >  >> RDS >> Sqlserver

Co je to vypočítaný sloupec na serveru SQL?

V SQL Server, vypočítaný sloupec je virtuální sloupec, který používá výraz k výpočtu své hodnoty.

Vypočítaný sloupec obvykle používá při výpočtu data z jiných sloupců. Pokud jsou data v některém z těchto sloupců aktualizována, vypočítaný sloupec automaticky zohlední aktualizaci ve svém výpočtu.

Příklad počítaného sloupce

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

V tomto příkladu FullName sloupec je vypočítaný sloupec. Zřetězí hodnoty z FirstName a LastName sloupců pro výpočet celého jména.

Pokud byste bez vypočítaného sloupce chtěli vybrat celé jméno, museli byste udělat něco takového:

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

Nebo můžete použít CONCAT() funkce, jako je tato:

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

Pokaždé, když chcete z tabulky vybrat celé jméno, bylo nutné do dotazu zahrnout zřetězení.

Ale pomocí vypočítaného sloupce, jako je ten výše, můžete udělat toto:

SELECT FullName
FROM Person;

Výhody počítaných sloupců

Vypočítané sloupce mohou ušetřit čas při psaní dotazů, snížit chyby a dokonce zlepšit výkon.

Vypočítané sloupce mohou být užitečné, pokud zjistíte, že opakovaně spouštíte stejný dotaz znovu a znovu, zejména pokud je tento dotaz založen na obchodních pravidlech, která se jen zřídka mění.

Vypočítaný sloupec v předchozím příkladu by nám mohl v budoucnu ušetřit spoustu času, protože nebudeme muset spojovat křestní jméno a příjmení pokaždé, když chceme vybrat něčí celé jméno.

Příklady případů použití

Příklady, kde by vypočítaný sloupec mohl být užitečný, zahrnují:

  • Výpočet věku osoby na základě data narození v jiném sloupci
  • Zřetězení křestního jména a příjmení na základě křestního jména v jednom sloupci a příjmení v druhém
  • Výpočet hodnoty zásob produktu na základě počtu produktů na skladě v jednom sloupci a ceny v jiném sloupci
  • Vypočítejte BMI (Body Mass Index) osoby na základě její výšky a hmotnosti v jiném sloupci
  • Vytvoření sloupce Hodnocení, který seřadí řádky na základě hodnot v jiných sloupcích
  • Výpočet závodních časů maratonských běžců na základě jejich času zahájení a času ukončení v jiných sloupcích

Trvalost vypočítaných sloupců

Vypočítaný sloupec není v tabulce fyzicky uložen, pokud není označen PERSISTED .

Pokud není trvalý vypočítaný sloupec, výpočet proběhne při každém přístupu k tabulce.

Pokud je trvalý vypočítaný sloupec, je vypočtená hodnota fyzicky uložena v tabulce. To znamená, že nemusí počítat svou hodnotu pokaždé, když spustíte dotaz. Pokud jsou data aktualizována v jednom ze sloupců, pro který odvozují svou hodnotu, aktualizuje se hodnota vypočítaného sloupce a uloží se do tabulky. To může pomoci s výkonem.

Uvědomte si, že vypočítaný sloupec může být zachován, pouze pokud je deterministický. Pokud není deterministický, zobrazí se chyba, pokud se jej pokusíte přetrvat.

nedeterministický sloupec je ten, který vrací různé hodnoty i se stejným vstupem. Pokud například ve výpočtu použijete aktuální datum, hodnota se bude každý den lišit a bude považována za nedeterministickou.

Pokud jednoduše spojujete křestní jméno a příjmení, pak by to bylo deterministické a takový sloupec byste mohli zachovat.

Vytvoření vypočítaného sloupce

Vypočítané sloupce můžete vytvářet z GUI SSMS nebo pomocí Transact-SQL.

V SSMS

V SSMS, zatímco v Návrháři tabulek , vytvořte sloupec, který má být vypočteným sloupcem (nebo jej jednoduše vyberte, pokud již existuje), a poté v části Vlastnosti sloupce zadejte vzorec do Specifikace vypočítaného sloupce pole majetku.

Nebojte se dát vypočítanému sloupci datový typ – SQL Server mu dá datový typ na základě vašeho vzorce.

Můžete také vybrat Ano pro Je trvalé Pokud si budete přát.

Použití T-SQL

Příklad vytvoření vypočítaného sloupce pomocí Transact-SQL naleznete v části Vytvoření vypočítaného sloupce na serveru SQL Server pomocí T-SQL.


  1. Stažení výpisu MySQL z příkazového řádku

  2. PostgreSQL 11:Recenzenti záplat pro rozdělování záplat

  3. Spravujte MySQL pomocí phpMyAdmin na Ubuntu 10.10 (Maverick)

  4. Jak PI() funguje v MariaDB