/ / Coalesce sql: beskrivning, användningsfunktioner, exempel

Coalesce sql: beskrivning, användningsfunktioner, exempel

När du skriver SQL-frågor förekommer det oftaen situation då det är nödvändigt att jämföra värdena i flera kolumner när man hämtar data och visa den som innehåller data (inte tom). Uttrycket Coalesce löser detta problem perfekt. I den här artikeln hittar du en fullständig beskrivning av Coalesce sql-uttrycket, en beskrivning av funktionerna i dess användning samt exempel.

sammanfoga sql beskrivning

Mata ut icke-tomma värden med Coalesce. Funktioner i

Tänk på Sql Coalesce användningsfunktioner:

  1. Tillåter att ange valfritt antal argument (till skillnad från Isnull / Nvl / Nvl2, som har ett begränsat antal argument).
  2. Kan ta underfrågor som argument.
  3. Returnerar ett resultat som är lika med den första ett icke-nollvärde eller noll om inget icke-nollvärde hittas.
  4. Sql Coalesce kan användas i en Select-sats för att välja ett icke-tomt värde, liksom i Where to klargör att en uppsättning kolumner med tomma värden inte är tillåten (/ är tillåten).
  5. Detta uttryck är detsamma som att använda uttrycketFall, som kontrollerar varje argument sekventiellt för villkoret När argument1 inte är null då argument1. I grund och botten är Coalesce en genväg för enkel användning, och i många DBMS skriver frågeoptimiserare om Coalesce-uttrycket till Case.
  6. Sql Coalesce-funktioner finns i alla ledande relationsdatabasesystem.

sql sammanfaller

Sammanfoga syntax

Alla som någonsin har använt Coalesce påkomponera SQL-frågor, vet att syntaxen för detta uttryck är extremt enkel. Det räcker att ange de argument som testats för Null inom parentes, åtskilda av kommatecken. Om vi ​​antar att argumenten heter arg1, arg2, ... argN, blir syntaxen för Coalesce följande:

Coalesce (arg1, arg2, ... argN).

sql samverkar funktioner

Låt oss förbereda flera tabeller för att studera mekanismen för detta uttryck.

Förbereder bord

För att bättre förstå Coalesce sql-beskrivningen, låt oss skapa två tabeller i databasen som innehåller information om fastighetsobjekt.

Låt den första tabellen, Area, innehålla namnen på fastighetsobjekt och deras område. Området kan anges (area_yt) eller deklareras (area_decl).

id

objektnamn

area_yt

area_decl

1

Byggnad 1

116,2

114

2

Konstruktion pågår 1

568

3

Rum 1

64,7

4

Rum 2

34,2

5

Tomt 1

112

111,6

6

Byggnad 1

7

Rum 3

27,9

8

Byggnad 2

37,2

36,4

9

Byggnad 2

Den andra Basic_characteristic tabellen låtinnehåller information om fastighetsobjektets huvudegenskaper - förlängning, djup, område, omfattning, höjd.

id

objektnamn

Förlängning

Djup

Område

Omfattning

Höjd

1

Byggnad 1

892,4

30

2

Byggnad 2

48

3

Byggnad 1

164,7

4

Tomt 1

5

Rum 1

23,6

6

Rum 2

34,7

7

Rum 3

19,8

Vi tittade på syntaxen för Coalesce sql, beskrivning, användningsfunktioner och låt oss gå direkt till exemplen.

Exempel på användning

Syntaxen för Coalesce-uttrycket är extremt enkel,Det är dock viktigt att komma ihåg att kommandot returnerar det FÖRSTA icke-tomma värdet som finns i argumentlistan. Denna anmärkning är väldigt viktig, så argumenten i uttrycket måste ordnas i ordning efter betydelse. Det enklaste sättet att förstå principen är från områdestabellen. Gör en fråga som väljer fastighetens namn samt områdets värde:

VÄLJ Area.id, Area.object_name, coalesce (Area.area_yt, Area.area_decl)

FRÅN området

Och få resultatet:

id

objektnamn

Växa samman

1

Byggnad 1

116,2

2

Konstruktion pågår 1

568

3

Rum 1

64,7

4

Rum 2

34,2

5

Tomt 1

112

6

Byggnad 1

7

Rum 3

27,9

8

Byggnad 2

37,2

9

Byggnad 2

För objekten "Byggnad 1", "Tomt 1" och"Byggnad 2", båda värdena i området fylldes, men prioriteringen var det område som specificerades, eftersom vi angav det först i listan med argument. Coalesce-uttrycket hittade det första värdet som inte var tomt och dumpade det och stoppade ytterligare skanningar av argument. Den här frågekonstruktionen är korrekt eftersom det angivna området är mer bestämt än det deklarerade. Om vi ​​hade angett det deklarerade området som det första argumentet, då detta fält i tabellen fylldes, skulle det ha prioritet.

Förutom att användas i Select, mycket oftaCoalesce-uttrycket tillämpas med en Where-klausul. Det gör att du kan stänga av de resultat där värdena i fältlistan är tomma (eller tvärtom, att endast inkludera de värden där fältlistan är tom) i resultatet. Denna situation förekommer överallt: Till exempel, vid företaget, när man registrerade en ny anställd, matades bara grundläggande information om honom in i databasen och fyllningen i detaljerad information lämnades "för senare". Gradvis kommer "luckor" upp - antingen före kontrollen eller när du skickar en anställd på semester / affärsresa / sjukfrånvaro.

Låt oss välja från tabellen med de viktigaste egenskaperna fastighetsobjekt för vilka inget av de karakteristiska värdena är fyllda:

VÄLJ id, objekt_namn

FRÅN Basic_characteristic

Där sammanslagning (förlängning, djup, område, omfattning, höjd) är noll

För denna fråga finns det en matchning i tabellen - objektet "Land tomt 1", där alla fält med egenskaper är tomma:

id

objektnamn

4

Tomt 1

sql sammanslagningsfunktioner

Vi hoppas att vår detaljerade Coalesce sql-beskrivning hjälpte dig att förstå alla funktionerna i att använda detta uttryck, samt hantera viktiga nyanser.