Când se compun interogări SQL, aceasta apare adeseao situație în care, la selectarea datelor, trebuie să comparați valorile mai multor coloane și să afișați pe cea care conține date (nu este goală). Expresia Coalesce rezolvă perfect această problemă. În acest articol veți găsi o descriere completă a expresiei sql Coalesce, o descriere a caracteristicilor sale de utilizare, precum și exemple.
Imprimarea valorilor non-nule utilizând Coalesce. Particularități
Să ne uităm la caracteristicile utilizării Sql Coalesce:
- Permite specificarea oricărui număr de argumente (spre deosebire de Isnull/Nvl/Nvl2, care au un număr limitat de argumente).
- Poate accepta subinterogări ca argumente.
- Returnează un rezultat egal cu primul o altă valoare decât Null sau Null dacă nu este găsită nicio altă valoare decât Null.
- Sql Coalesce poate fi folosit în clauza Select pentru a selecta o valoare care nu este goală și, de asemenea, în Unde să specificați că un set de coloane cu valori nule nu este permis (/permis).
- Această expresie este echivalentă cu utilizarea expresieiCase, care verifică fiecare argument secvenţial pentru condiţia Când argument1 nu este nul, atunci argument1. În esență, Coalesce este o „comandă rapidă” creată pentru ușurință în utilizare, iar în multe SGBD-uri, optimizatorii de interogări rescriu expresia Coalesce în Case.
- Funcțiile Sql Coalesce sunt disponibile în toate sistemele de management al bazelor de date relaționale.
Sintaxa Coalesce
Toți cei care au folosit vreodată Coalesce pentruatunci când compune interogări sql, el știe că sintaxa acestei expresii este extrem de simplă. Este suficient să indicați argumentele testate pentru Null în paranteze, separate prin virgule. Dacă presupunem că argumentele sunt denumite arg1, arg2, ... argN, atunci sintaxa Coalesce va arăta astfel:
Coalesce (arg1, arg2, … argN).
Să pregătim mai multe tabele pentru a studia mecanismul de funcționare al acestei expresii.
Pregătirea meselor
Pentru a înțelege mai bine descrierea Coalesce sql, să creăm două tabele în baza de date care să conțină informații despre obiectele imobiliare.
Fie ca primul tabel Area să conțină numele obiectelor imobiliare și zona acestora. Zona poate fi specificată (area_yt) sau declarată (area_decl).
id | nume_obiect | area_yt | area_decl |
1 | Cladirea 1 | 116,2 | 114 |
2 | Obiect de construcție neterminat 1 | 568 | |
3 | Camera 1 | 64,7 | |
4 | Camera 2 | 34,2 | |
5 | Terenul 1 | 112 | 111,6 |
6 | Cladirea 1 | ||
7 | Camera 3 | 27,9 | |
8 | Cladirea 2 | 37,2 | 36,4 |
9 | Cladirea 2 |
Al doilea tabel Basic_characteristic latcontine informatii despre principalele caracteristici ale proprietatii - lungime (Extensie), adancime (Adancime), suprafata (Area), volum (Scope), inaltime (Inaltime).
id | nume_obiect | Extensie | Adâncime | Zonă | Domeniul de aplicare | Înălţime |
1 | Cladirea 1 | 892,4 | 30 | |||
2 | Cladirea 2 | 48 | ||||
3 | Cladirea 1 | 164,7 | ||||
4 | Terenul 1 | |||||
5 | Camera 1 | 23,6 | ||||
6 | Camera 2 | 34,7 | ||||
7 | Camera 3 | 19,8 |
Ne-am uitat la sintaxa sql Coalesce, descrierea, caracteristicile de utilizare și să trecem direct la exemple.
Exemple de utilizare
Sintaxa expresiei Coalesce este extrem de simplă,totuși, este important să ne amintim că rezultatul comenzii va fi PRIMA valoare nevidă găsită în lista de argumente. Această remarcă este foarte importantă, așa că argumentele din expresie trebuie aranjate în ordinea importanței. Cel mai simplu mod de a înțelege principiul este din tabelul cu zone. Compuneți o interogare selectând numele proprietății, precum și valoarea zonei:
SELECT Area.id, Area.object_name, coalesce(Area.area_yt, Area.area_decl) DIN Zona |
Și obțineți rezultatul:
id | nume_obiect | Se unesc |
1 | Cladirea 1 | 116,2 |
2 | Obiect de construcție neterminat 1 | 568 |
3 | Camera 1 | 64,7 |
4 | Camera 2 | 34,2 |
5 | Terenul 1 | 112 |
6 | Cladirea 1 | |
7 | Camera 3 | 27,9 |
8 | Cladirea 2 | 37,2 |
9 | Cladirea 2 |
Pentru obiectele „Clădirea 1”, „Terenul 1” și„Structura 2”, ambele valori ale zonei au fost completate, dar zonei specificate a primit prioritate, deoarece am specificat-o mai întâi în lista de argumente. Expresia Coalesce a găsit prima valoare nevidă și a tipărit-o, oprind argumentele ulterioare. Această construcție a cererii este corectă, deoarece zona specificată este mai specifică decât cea declarată. Dacă am fi specificat zona declarată ca prim argument, atunci când acest câmp de tabel a fost completat, ar avea prioritate.
Pe lângă faptul că este folosit în Select, foarte desExpresia Coalesce este aplicată cu condiția Where. Vă permite să tăiați din rezultat acele rânduri în care valorile listei de câmpuri sunt goale (sau invers, includeți în rezultat doar acele valori în care lista de câmpuri nu este completată). Această situație apare peste tot: de exemplu, la o întreprindere, la înregistrarea unui nou angajat, numai informațiile de bază despre el au fost introduse în baza de date, iar completarea informațiilor detaliate a fost lăsată „pentru mai târziu”. Treptat, apar „lacune” - fie înainte de o inspecție, fie atunci când un angajat este trimis în vacanță/călătorie de afaceri/concediu medical.
Să selectăm din tabelul cu principalele caracteristici obiecte imobiliare pentru care nu se completează niciuna dintre valorile caracteristice:
SELECT ID, nume_obiect FROM Caracteristica_de bază Unde coalesce (Extensie, Adâncime, Arie, Domeniu, Înălțime) este nul |
Pentru această interogare, există o potrivire în tabel - obiectul „Teren 1”, pentru care toate câmpurile cu caracteristici sunt goale:
id | nume_obiect |
4 | Terenul 1 |
Sperăm că descrierea noastră detaliată a Coalesce sql v-a ajutat să înțelegeți toate caracteristicile utilizării acestei expresii, precum și să înțelegeți nuanțele importante.