Padėkite kurti svetainę ir pasidalykite straipsniu su draugais!

Įvadas į SQL COALESCE

COALESCE yra iš anksto nustatyta integruota struktūrinės užklausos kalbos (SQL) funkcija, naudojama NULL reikšmėms duomenų įrašuose apdoroti. Jis nuosekliai įvertina įvesties parametrų rinkinį arba sąrašą ir grąžina pirmąsias ne NULL reikšmes. Funkcija COALESCE nutrūksta, kai susiduria su pirmąja ne NULL reikšme ir grąžina ją. Jei visi įvesties sąrašo argumentai yra NULL reikšmės, funkcija grąžins NULL.

Tai bendroji funkcija, palaikoma visose duomenų bazėse, pvz., MYSQL, SQL Server (nuo 2008 m.), Azure SQL duomenų bazėje, PostgreSQL, Oracle ir kt.

Kai kurie SQL COALESCE funkcijos naudojimo būdai yra:

  • NULL verčių tvarkymas
  • Dvi ar daugiau užklausų vykdymas kaip viena užklausa
  • Spartusis klavišas ilgiems ir daug laiko reikalaujantiems CASE teiginiams

Sintaksė ir parametrai

Pagrindinė COALESCE funkcijos naudojimo SQL sintaksė yra tokia:

SELECT COALESCE(reikšmė_1, vertė_2, vertė_3, vertė_4,… vertė_n);

Aukščiau pateiktoje sintaksėje paminėti parametrai yra:

COALESCE() : SQL funkcija, kuri grąžina pirmąją ne nulinę reikšmę iš įvesties sąrašo.

reikšmė_1, vertė_2, vertė_3, vertė_4,… vertė_n : įvesties reikšmės, kurias reikia įvertinti.

Kadangi funkcija COALESCE yra pati išraiška, ją galima naudoti bet kuriame sakinyje ar sakinyje, kuris priima tokias išraiškas kaip SELECT, WHERE ir HAVING.

COALESCE funkcija gali būti laikoma specializuota CASE teiginio versija SQL.

CASE teiginio, parodančio COALESCE funkcijos funkciją, sintaksė yra tokia:

SELECT stulpelio_pavadinimas1,stulpelio_pavadinimas2, stulpelio_pavadinimas3,
CASE
KAI stulpelio_pavadinimas1 NĖRA NULIS, TAI stulpelio_pavadinimas1
KAI stulpelio_pavadinimas2 NĖRA NULIS, TAI stulpelio_pavadinimas2 ELSE NULL
BAIGTI kaip „atvejo_pavadinimas“
FROM lentelės_pavadinimas;

Aukščiau pateiktoje sintaksėje paminėti parametrai yra:

Stulpelio_pavadinimas1, stulpelio_pavadinimas2: stulpelių, kurie turi būti sujungti, reikšmės, t. y. jei kurio nors iš šių stulpelių rezultatas yra NULL, tada bus grąžinta pirmoji ne NULL reikšmė. Bet jei abu jie įvertina NULL, tada CASE grąžins NULL.

Toliau mes labai išsamiai aptarsime aukščiau paminėtą COALESCE funkciją.

Siekdami geriau suprasti sąvoką, pasitelksime darbuotojų lentelę (joje yra visų darbuotojų asmeninė informacija).

Duomenys „darbuotojų“ lentelėje yra tokie:

SQL COALESCE pavyzdžiai

Štai keli pavyzdžiai, kaip geriau suprasti SQL COALESCE.

1 pavyzdys

SQL užklausa, iliustruojanti paprastos COALESCE funkcijos naudojimą.

Kodas:

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

Išvestis:

Šiame pavyzdyje matome, kad funkcija COALESCE pasirenka pirmąją reikšmę, o ne NULL, ji susiduria ir baigiasi.

2 pavyzdys

SQL užklausa, norint rasti pirmąsias nenulines reikšmes iš darbuotojo vardo ir pavardės.

Kodas:

PASIRINKITE darbuotojo ID,vardą, pavardę,
COALESCE(vardas,pavardė) kaip 'pirmasis, o ne nulinis vardas'
IŠ darbuotojų;

Išvestis:

Šiame pavyzdyje grąžinamas pirmasis ne NULL.

3 pavyzdys

SQL užklausa, skirta COALESCE funkcijai iliustruoti kaip ypatingą CASE atvejį.

Kodas:

PASIRINKITE darbuotojo ID,vardą, pavardę,
CASE
KAI vardas NĖRA NULIS, TAI vardas
KAI pavardė NĖRA NULL, TAI pavardė KITAS NULL
END kaip „pirma, o ne nulinė reikšmė“
IŠ darbuotojų;

Išvestis:

Palyginkite šios užklausos ir trečiojo pavyzdžio užklausos rezultatus. Matome, kad abu jie duoda tą patį rezultatą. Taip yra todėl, kad COALESCE funkcija gali būti laikoma ypatingu CASE atveju.

4 pavyzdys

SQL užklausa, skirta iliustruoti funkcijos COALESCE naudojimą vertėms su skirtingais duomenų tipais.

Kodas:

PASIRINKITE darbuotojo ID,vardą, pavardę,
COALESCE(darbuotojo eiga,vardas,pavardė) kaip 'pirmasis, o ne nulinis vardas'
IŠ darbuotojų;

Išvestis:

Aukščiau pateiktame pavyzdyje matome, kad darbuotojo ID negalėjo būti sujungtas su vardo ir pavardės duomenų reikšmėmis, nes jų duomenų tipai skiriasi.

Siekdami išspręsti šią problemą, galime pakeisti darbuotojo ID duomenų tipą naudodami CONVERT funkciją, kaip parodyta toliau.

Kodas:

PASIRINKITE darbuotojo ID,vardą, pavardę,
COALESCE(CONVERT(varchar(50),darbuotojas),vardas,pavardė) kaip 'pirmos, o ne nulinės reikšmės'
IŠ darbuotojų;

Išvestis:

5 pavyzdys

Sudėtinga SQL užklausa, iliustruojanti COALESCE funkcijos naudojimą.

Tarkime, norime žinoti visų įmonės darbuotojų atlyginimus. Bet darbuotojo lentelėje matome, kad visų darbuotojų atlyginimai nebuvo paminėti. Tačiau buvo paminėti valandiniai įkainiai ir komisiniai darbuotojams, kuriems trūksta atlyginimo laukelių. Tai galime naudoti norėdami palyginti darbuotojų atlyginimus tokiu būdu.

Kodas:

SELECT COALESCE(CONVERT(varchar(50),darbuotojo eid.vardas,pavardė) kaip 'Darbuotojo identifikatorius',
COALESCE(atlyginimas,valandinis_atlygis830 + COALESCE(komisiniai,0))kaip 'Atlyginimas'
IŠ darbuotojų
UŽSAKYTI IKI 2 D. DĖL;

Išvestis:

Naudodami pirmąją COALESCE funkciją bandėme identifikuoti darbuotoją sujungdami darbuotojo ID, vardą ir pavardę, o tada naudodami antrąją COALESCE funkciją bandėme pasirinkti atlyginimą arba apskaičiuotą kompensaciją.

Išvada

SQL COALESCE funkcija yra įtaisyta funkcija tokiose duomenų bazėse kaip SQL Server, Azure ir kt., kuri grąžina pirmąją ne NULL reikšmę iš įvesties argumentų sąrašo. Tai labai naudinga tvarkant nulines reikšmes ir yra greita ir paprasta SQL CASE teiginių alternatyva.

Padėkite kurti svetainę ir pasidalykite straipsniu su draugais!