Når du skriver SQL-spørsmål, oppstår det ofteen situasjon når det er nødvendig å sammenligne verdiene til flere kolonner når du henter data og vise den som inneholder dataene (ikke tomme). Uttrykket Coalesce løser dette problemet perfekt. I denne artikkelen finner du en fullstendig beskrivelse av Coalesce sql-uttrykket, en beskrivelse av funksjonene ved bruken, samt eksempler.
Skrive ut ikke-tomme verdier med Coalesce. Funksjoner av
Vurder Sql Coalesce bruksfunksjoner:
- Lar spesifisere et hvilket som helst antall argumenter (i motsetning til Isnull / Nvl / Nvl2, som har et begrenset antall argumenter).
- Kan ta underspørsmål som argument.
- Returnerer et resultat som er lik den første en verdi som ikke er null, eller null hvis ingen verdi som ikke er null blir funnet.
- Sql Coalesce kan brukes i en Select-setning for å velge en ikke-tom verdi, så vel som i Where to klargjøre at et sett med kolonner med tomme verdier ikke er tillatt (/ er tillatt).
- Dette uttrykket er det samme som å bruke uttrykketTilfelle, som sekvensielt sjekker hvert argument for tilstanden Når argument1 ikke er null, så argument1. I utgangspunktet er Coalesce en snarvei for brukervennlighet, og i mange DBMSer omskriver spørringsoptimaliserere Coalesce-uttrykket til Case.
- Sql Coalesce-funksjoner finnes i alle ledende relationsdatabasesystemer.
Samles syntaks
Alle som noen gang har brukt Coalesce påkomponere sql-spørringer, vet at syntaksen til dette uttrykket er ekstremt enkelt. Det er nok å spesifisere argumentene som er testet for Null i parentes, atskilt med komma. Hvis vi antar at argumentene heter arg1, arg2, ... argN, vil syntaksen for Coalesce være som følger:
Coalesce (arg1, arg2, ... argN).
La oss forberede flere tabeller for å studere mekanismen til dette uttrykket.
Forbereder bord
For å bedre forstå Coalesce sql-beskrivelsen, la oss lage to tabeller som inneholder informasjon om eiendomsobjekter i databasen.
La første tabell, Areal, inneholde navnene på eiendomsobjekter og deres område. Området kan spesifiseres (area_yt) eller erklært (area_decl).
id | objektnavn | area_yt | area_decl |
1 | Bygning 1 | 116,2 | 114 |
2 | Bygging pågår 1 | 568 | |
3 | Rom 1 | 64,7 | |
4 | Rom 2 | 34,2 | |
5 | Tomtetomt 1 | 112 | 111,6 |
6 | Bygning 1 | ||
7 | Rom 3 | 27,9 | |
8 | Bygning 2 | 37,2 | 36,4 |
9 | Bygning 2 |
Den andre Basic_characteristic tabellen lainneholder informasjon om hovedegenskapene til eiendomsobjektet - utvidelse, dybde, areal, omfang, høyde.
id | objektnavn | Utvidelse | Dybde | Område | omfang | Høyde |
1 | Bygning 1 | 892,4 | 30 | |||
2 | Bygning 2 | 48 | ||||
3 | Bygning 1 | 164,7 | ||||
4 | Tomtetomt 1 | |||||
5 | Rom 1 | 23,6 | ||||
6 | Rom 2 | 34,7 | ||||
7 | Rom 3 | 19,8 |
Vi så på syntaksen til Coalesce sql, beskrivelse, bruksfunksjoner, og la oss gå direkte til eksemplene.
Eksempler på bruk
Syntaksen for Coalesce-uttrykket er ekstremt enkel,Det er imidlertid viktig å huske at kommandoen vil returnere den FØRSTE ikke-tomme verdien som finnes i argumentlisten. Denne bemerkningen er veldig viktig, så argumentene i uttrykket må ordnes i rekkefølge av betydning. Den enkleste måten å forstå prinsippet er fra områdetabellen. Lag et spørsmål som velger navnet på eiendommen, samt verdien av området:
VELG Area.id, Area.object_name, coalesce (Area.area_yt, Area.area_decl) FRA området |
Og få resultatet:
id | objektnavn | Coalesce |
1 | Bygning 1 | 116,2 |
2 | Bygging pågår 1 | 568 |
3 | Rom 1 | 64,7 |
4 | Rom 2 | 34,2 |
5 | Tomtetomt 1 | 112 |
6 | Bygning 1 | |
7 | Rom 3 | 27,9 |
8 | Bygning 2 | 37,2 |
9 | Bygning 2 |
For gjenstandene "Bygg 1", "Tomt 1" og"Bygning 2", begge verdiene i området ble fylt, men prioriteten var området som ble spesifisert, siden vi spesifiserte det først i listen over argumenter. Coalesce-uttrykket fant den første ikke-tomme verdien og dumpet den, og stoppet ytterligere argumentskanninger. Denne spørringskonstruksjonen er riktig, fordi det angitte området er mer bestemt enn det deklarerte. Hvis vi hadde spesifisert det deklarerte området som det første argumentet, ville dette prioritet være når dette feltet i tabellen ble fylt ut.
Foruten å bli brukt i Select, veldig ofteCoalesce-uttrykket brukes med en Where-ledd. Den lar deg kutte linjene der verdiene i listen over felt er tomme (eller omvendt, for bare å inkludere de verdiene der listen over felt er tom) fra resultatet. Denne situasjonen forekommer overalt: For eksempel ble det ved grunnlegging av nyansatt bare registrert grunnleggende informasjon om ham i databasen, og utfylling av detaljert informasjon ble etterlatt "til senere". Gradvis kommer "hull" opp - enten før sjekken, eller når du sender en ansatt på ferie / forretningsreise / sykefravær.
La oss velge fra tabellen med hovedegenskapene eiendomsobjekter som ingen av de karakteristiske verdiene er fylt for:
VELG id, objektnavn FRA Basic_characteristic Hvor koalesse (utvidelse, dybde, areal, omfang, høyde) er null |
For dette spørsmålet er det en kamp i tabellen - objektet "Land plot 1", der alle felt med egenskaper er tomme:
id | objektnavn |
4 | Tomtetomt 1 |
Vi håper at vår detaljerte Coalesce sql-beskrivelse hjalp deg med å forstå alle funksjonene ved å bruke dette uttrykket, samt håndtere viktige nyanser.