Při kompilaci dotazů sql,Při výběru dat je třeba porovnat hodnoty několika sloupců a vygenerovat jednu z nich, která obsahuje data (není prázdná). Tento problém je dokonale vyřešen výrazem Coalesce. V tomto článku najdete úplný popis výrazu Coalesce sql, popis vlastností použití, stejně jako příklady.
Výstup hodnot nula pomocí Coalesce. Vlastnosti
Zvažte vlastnosti Sql Coalesce:
- Přiřadí označení libovolného počtu argumentů (na rozdíl od Isnull / Nvl / Nvl2, počet argumentů je omezen).
- Může přijmout poddotazy jako argument.
- Vrací výsledek rovný první jiné než Null nebo Null, pokud se nenalezne jiná hodnota než hodnota Null.
- Sloupce Sql Coalesce lze použít v klauzuli Vybrat pro volbu hodnoty, která není prázdná, a rovněž v části Kde určit, že sada sloupců s prázdnými hodnotami není povolena (/ povoleno).
- Данное выражение равнозначно применению выражения Případ, který každý argument postupně kontroluje na podmínce Když argument1 není null, pak argument1. Ve skutečnosti je Coalesce "zkratkou" určenou pro snadné použití a v mnoha optimalizátorech dotazů DBMS přepisuje výraz Coalesce na případu.
- Funkce Sql Coalesce jsou k dispozici ve všech předních systémech správy relačních databází.
Syntaxe Coalesce
Každý, kdo alespoň jednou použil Coalescesestavování dotazů sql, ví, že syntaxe tohoto výrazu je velmi jednoduchá. Stačí v závorce uvést argumenty, zaškrtnuté na Nulu, oddělené čárkami. Pokud předpokládáme, že argumenty mají názvy arg1, arg2, ... argN, potom syntaxe Coalesce vypadá takto:
Koalesce (arg1, arg2, ... argN).
Připravíme několik tabulek pro studium mechanismu tohoto výrazu.
Příprava stolů
Pro lepší pochopení popisu Coalesce sql vytvoříme v databázi dvě tabulky obsahující informace o objektech nemovitostí.
První oblastní tabulka by měla obsahovat názvy objektů s nemovitostmi a jejich oblast. Oblast může být zdokonalena (oblast_yt) nebo deklarována (oblast_decl).
id | název_objektu | area_yt | area_decl |
1 | Budova 1 | 116,2 | 114 |
2 | Nedokončený konstrukční objekt 1 | 568 | |
3 | Pokoj 1 | 64,7 | |
4 | Pokoj 2 | 34,2 | |
5 | Pozemek 1 | 112 | 111,6 |
6 | Budova 1 | ||
7 | Pokoj 3 | 27,9 | |
8 | Budova 2 | 37,2 | 36,4 |
9 | Budova 2 |
Druhá tabulka Basic_characteristic letobsahuje informace o hlavních vlastnostech realitního objektu - rozšíření, hloubka, plocha, rozsah, výška.
id | název_objektu | Rozšíření | Hloubka | Plocha | Rozsah | Výška |
1 | Budova 1 | 892,4 | 30 | |||
2 | Budova 2 | 48 | ||||
3 | Budova 1 | 164,7 | ||||
4 | Pozemek 1 | |||||
5 | Pokoj 1 | 23,6 | ||||
6 | Pokoj 2 | 34,7 | ||||
7 | Pokoj 3 | 19,8 |
Podívali jsme se na syntaxi, popis, funkce použití Coalesce sql a pojďme přímo k příkladům.
Příklady použití
Syntaxe výrazu Coalesce je extrémně jednoduchá,je však důležité si uvědomit, že příkaz vrátí PRVNÍ neprázdnou hodnotu nalezenou v seznamu argumentů. Tato poznámka je velmi významná, takže argumenty ve výrazu musí být seřazeny podle důležitosti. Nejjednodušší způsob, jak pochopit princip, je z tabulky oblastí. Proveďte dotaz, který vybere název vlastnosti a hodnotu oblasti:
VYBERTE Area.id, Area.object_name, coalesce (Area.area_yt, Area.area_decl) Z oblasti |
A získejte výsledek:
id | název_objektu | Splynout |
1 | Budova 1 | 116,2 |
2 | Nedokončený konstrukční objekt 1 | 568 |
3 | Pokoj 1 | 64,7 |
4 | Pokoj 2 | 34,2 |
5 | Pozemek 1 | 112 |
6 | Budova 1 | |
7 | Pokoj 3 | 27,9 |
8 | Budova 2 | 37,2 |
9 | Budova 2 |
U objektů "Budova 1", "Pozemek 1" a„Budova 2“ byly vyplněny obě hodnoty oblasti, ale prioritou byla zadaná oblast, protože jsme ji zadali jako první v seznamu argumentů. Výraz Coalesce našel první neprázdnou hodnotu a vypsal ji, čímž zastavil další skenování argumentů. Tato konstrukce dotazu je správná, protože zadaná oblast je konkrétnější než deklarovaná. Pokud bychom uvedli deklarovanou oblast jako první argument, pak by po vyplnění tohoto pole tabulky mělo prioritu.
Kromě použití Select, velmi častovýraz Coalesce se použije s klauzulí Where. Umožňuje vám odříznout od výsledku ty řádky, ve kterých jsou hodnoty seznamu polí prázdné (nebo naopak, zahrnout do výsledku pouze ty hodnoty, kde je seznam polí prázdný). Tato situace nastává všude: například v podniku při registraci nového zaměstnance byly do databáze zadány pouze základní informace o něm a vyplnění podrobných informací bylo ponecháno „na později“. Postupně se objevují „mezery“ - buď před kontrolou, nebo při vysílání zaměstnance na dovolenou / služební cestu / nemocenskou dovolenou.
Vybereme z tabulky s hlavními charakteristikami objekty nemovitostí, pro které není vyplněna žádná z charakteristických hodnot:
Vyberte ID, název_objektu FROM Basic_characteristic Kde splývání (Extension, Depth, Area, Scope, Height) je null |
Pro tento požadavek existuje v tabulce jedna shoda - objekt „Pozemek 1“, ve kterém jsou všechna pole s charakteristikami prázdná:
id | název_objektu |
4 | Pozemek 1 |
Doufáme, že náš podrobný popis Coalesce sql vám pomohl pochopit všechny funkce používání tohoto výrazu a vypořádat se s důležitými nuancemi.