Hjälp utvecklingen av webbplatsen och dela artikeln med vänner!

Introduktion till SQL COALESCE

COALESCE är en fördefinierad inbyggd SQL-funktion (Structured Query Language) som används för att hantera NULL-värden i dataposterna. Den utvärderar en uppsättning eller lista med indataparametrar på ett sekventiellt sätt och returnerar de första icke-NULL-värdena bland dem. Funktionen COALESCE avslutas när den stöter på det första icke-NULL-värdet och returnerar det. Om alla argument i inmatningslistan är NULL-värden, kommer funktionen att returnera NULL.

Det är en generisk funktion som stöds i alla databaser som MYSQL, SQL Server (från 2008), Azure SQL-databas, PostgreSQL, Oracle, etc.

Vissa användningar av SQL COALESCE-funktionen är:

  • Hantera NULL-värden
  • Kör två eller fler frågor som en enda fråga
  • Genvägs alternativ till långa och tidskrävande CASE-uttalanden

Syntax och parametrar

Den grundläggande syntaxen för att använda COALESCE-funktionen i SQL är följande:

SELECT COALESCE(value_1, value_2,value_3,value_4,… value_n);

De parametrar som nämns i ovanstående syntax är:

COALESCE() : SQL-funktion som returnerar det första icke-nullvärdet från inmatningslistan.

value_1, value_2,value_3,value_4,… value_n : Ingångsvärdena som måste utvärderas.

Eftersom COALESCE-funktionen är ett uttryck i sig själv kan den användas i alla satser eller satser som accepterar uttryck som SELECT, WHERE och HAVING.

COALESCE-funktionen kan betraktas som en specialiserad version av CASE-satsen i SQL.

Syntaxen för CASE-satsen som visar funktionen för COALESCE-funktionen är som följer:

SELECT column_name1,column_name2, column_name3,
CASE
NÄR kolumn_namn1 INTE ÄR NULL DÅ kolumnnamn1
NÄR kolumn_namn2 INTE ÄR NULL DÅ kolumn_namn2 ANNAT NULL
SLUT som 'case_name'
FROM table_name;

De parametrar som nämns i ovanstående syntax är:

Kolumnnamn1, kolumnnamn2: Värdena för kolumner som måste ha sammansmälts, d.v.s. om resultaten av någon av dessa kolumner resulterar i NULL-värden, kommer det första icke-NULL-värdet bland dem att returneras. Men om båda utvärderas till NULL, kommer CASE att returnera NULL.

Vi kommer att diskutera ovan nämnda COALESCE-funktion i detalj.

För att förstå konceptet bättre kommer vi att ta hjälp av medarbetarens bord (denna innehåller personliga uppgifter om alla anställda).

Datan i tabellen "anställda" är följande:

Exempel på SQL COALESCE

Här är några exempel för att förstå SQL COALESCE bättre.

Exempel 1

SQL-fråga för att illustrera användningen av en enkel COALESCE-funktion.

Kod:

SELECT COALESCE(NULL, NULL, NULL, 'EduCBA', NULL, NULL);

Utdata:

I det här exemplet kan vi se att COALESCE-funktionen väljer det första inte NULL-värdet, den stöter på och avslutar.

Exempel 2

SQL-fråga för att hitta de första icke-nullvärdena från en anställds för- och efternamn.

Kod:

SELECT anställd-id,förnamn, efternamn,
COALESCE(förnamn,efternamn) som 'förnamn inte null'
FRÅN anställda;

Utdata:

I det här exemplet returneras den första icke-NULL.

Exempel 3

SQL-fråga för att illustrera COALESCE-funktionen som ett specialfall av CASE.

Kod:

SELECT anställd-id,förnamn, efternamn,
CASE
NÄR förnamnet INTE ÄR NULL DÅ förnamn
NÄR efternamn INTE ÄR NULL DÅ efternamn ANNAT NULL
END som 'första inte nullvärde'
FRÅN anställda;

Utdata:

Jämför resultaten av den här frågan och resultaten för frågan i det tredje exemplet. Vi kan se att båda ger samma resultat. Detta beror på att COALESCE-funktionen kan betraktas som ett specialfall av CASE.

Exempel 4

SQL-fråga för att illustrera användningen av COALESCE-funktionen på värden med olika datatyper.

Kod:

SELECT anställd-id,förnamn, efternamn,
COALESCE(anställd, förnamn,efternamn) som 'förnamn inte null'
FRÅN anställda;

Utdata:

I exemplet ovan kan vi se att medarbetar-ID inte kunde klubbas med datavärden för förnamn och efternamn eftersom de har olika datatyper.

För att lösa detta problem kan vi komma att ändra datatypen för anställd-id med hjälp av KONVERTERA-funktionen som visas nedan.

Kod:

SELECT anställd-id,förnamn, efternamn,
COALESCE(CONVERT(varchar(50),anställd),förnamn,efternamn) som 'första inte nullvärden'
FRÅN anställda;

Utdata:

Exempel 5

En komplex SQL-fråga för att illustrera användningen av COALESCE-funktionen.

Anta att vi vill veta lönerna för alla anställda i företaget. Men i den anställdes tabell kan vi se att alla anställdas löner inte har nämnts. Däremot har timpriser och provision av anställda med saknade lönefält nämnts. Vi kan använda det för att jämföra anställdas löner på följande sätt.

Kod:

SELECT COALESCE(CONVERT(varchar(50),employeeid),firstname,efternamn) as 'Employee Identifier',
COALESCE(lön,timpris830 + COALESCE(provision,0))som 'kompensation'
FRÅN anställda
BESTÄLL MED 2 DESC;

Utdata:

Med den första COALESCE-funktionen försökte vi identifiera en anställd genom att sammanfoga anställd-id, förnamn och efternamn och sedan använda den andra COALESCE-funktionen, försökte vi välja lön eller beräknad ersättning.

Slutsats

SQL COALESCE-funktionen är en inbyggd funktion i databaser som SQL Server, Azure, etc. som returnerar det första icke-NULL-värdet från en indatalista med argument. Det är mycket användbart för att hantera nollvärden och är ett snabbt och enkelt alternativ till SQL CASE-satser.

Hjälp utvecklingen av webbplatsen och dela artikeln med vänner!