Si të përdorni funksionin COALESCE në SQL Server

A keni hasur ndonjëherë në një situatë ku duhet të trajtoni vlerat NULL në pyetjet tuaja? Për shembull, mund të dëshironi të shfaqni një vlerë të paracaktuar kur një kolonë është NULL, ose të kombinoni disa kolona në një dhe të zgjidhni vlerën e parë jo-NULL. Në këtë postim në blog, ne do t'ju tregojmë se si të përdorni funksionin COALESCE në SQL Server për të arritur këto detyra dhe më shumë.

Cili është funksioni COALESCE?

Funksioni COALESCE është një funksion i integruar në SQL Server që vlerëson një listë shprehjesh dhe kthen të parën që nuk është NULL. Nëse të gjitha shprehjet janë NULL, atëherë funksioni kthen NULL.

Sintaksa e funksionit COALESCE është:

COALESCE (expression1, expression2, ..., expressionN)

Shprehjet mund të jenë të çdo lloji, por ato duhet të jenë të pajtueshme me njëra-tjetrën. Lloji i të dhënave të rezultatit përcaktohet nga shprehja me përparësinë më të lartë.

Si të përdorni funksionin COALESCE

Le të shohim disa shembuj se si të përdorim funksionin COALESCE në SQL Server.

Shembulli 1: Shfaq një vlerë të paracaktuar kur një kolonë është NULL

Supozoni se kemi një tabelë të quajtur Products që ruan informacione për disa produkte, si emri, çmimi dhe kategoria e tyre. Disa produkte nuk kanë një kategori të caktuar, kështu që kolona Category është NULL për ta.

Nëse duam t'i shfaqim produktet me kategoritë e tyre, por të zëvendësojmë vlerat NULL me një vlerë të paracaktuar si 'E panjohur', mund të përdorim funksionin COALESCE si më poshtë:

SELECT Name, Price, COALESCE(Category, 'Unknown') AS Category
FROM Products;

Rezultati është:

Siç mund ta shihni, funksioni COALESCE kthen vlerën e Category nëse nuk është NULL, përndryshe kthen 'E panjohur'.

Shembulli 2: Kombinoni kolona të shumta në një dhe zgjidhni vlerën e parë jo NULL

Supozoni se kemi një tabelë tjetër të quajtur Contacts që ruan informacione për disa kontakte, si emri, emaili, telefoni dhe adresa e tyre. Disa kontakte nuk i kanë të gjitha këto të dhëna të plotësuara, kështu që disa kolona janë NULL për ta.

Nëse duam t'i shfaqim kontaktet me metodën e tyre të preferuar të kontaktit, e cila është vlera e parë jo NULL midis emailit, telefonit dhe adresës, mund të përdorim funksionin COALESCE si më poshtë:

SELECT Name, COALESCE(Email, Phone, Address) AS PreferredContact
FROM Contacts;

Rezultati është:

Siç mund ta shihni, funksioni COALESCE kthen vlerën e parë jo NULL midis emailit, telefonit dhe adresës për çdo kontakt.

Si ta trajtoni këtë në mënyrën e vjetër dhe çfarë ofron COALESCE

Përpara se funksioni COALESCE të futej në SQL Server, ne duhej të përdornim metoda të tjera për të trajtuar vlerat NULL në pyetjet tona. Për shembull, ne mund të përdorim funksionin ISNULL ose shprehjen CASE.

Funksioni ISNULL merr dy argumente dhe kthen të parin nëse nuk është NULL, përndryshe kthen të dytin. Për shembull:

SELECT Name, ISNULL(Category, 'Unknown') AS Category
FROM Products;

Ky pyetje prodhon të njëjtin rezultat si përdorimi i COALESCE me dy argumente. Sidoqoftë, ka disa ndryshime midis ISNULL dhe COALESCE:

  • ISNULL pranon vetëm dy argumente, ndërsa COALESCE mund të pranojë çdo numër argumentesh.
  • ISNULL përdor llojin e të dhënave të argumentit të parë për rezultatin, ndërsa COALESCE ndjek rregullat e shprehjes CASE dhe kthen llojin e të dhënave të vlerës me përparësinë më të lartë.
  • ISNULL vlerësohet vetëm një herë, ndërsa COALESCE mund të vlerësohet shumë herë. Kjo mund të ndikojë në performancën dhe qëndrueshmërinë e rezultateve, veçanërisht kur përdoren nënpyetje ose funksione jo-përcaktuese.

Shprehja CASE është një shprehje e kushtëzuar që na lejon të kryejmë veprime të ndryshme bazuar në kushte të ndryshme. Për shembull:

SELECT Name, CASE WHEN Category IS NOT NULL THEN Category ELSE 'Unknown' END AS Category
FROM Products;w

Ky pyetje prodhon të njëjtin rezultat si përdorimi i COALESCE me dy argumente. Sidoqoftë, ka disa ndryshime midis CASE dhe COALESCE:

  • CASE është më e folur dhe më komplekse se BASHKIMI, veçanërisht kur kemi të bëjmë me shprehje të shumta.
  • CASE mund të trajtojë logjikë dhe kushte më komplekse sesa COALESCE, i cili kontrollon vetëm vlerat NULL.
  • CASE dhe COALESCE mund të kenë implikime të ndryshme të performancës në varësi të optimizuesit të pyetjeve dhe planit të ekzekutimit.

Siç mund ta shihni, funksioni COALESCE ofron një mënyrë më të thjeshtë dhe më të qëndrueshme për të trajtuar vlerat NULL në SQL Server. Është gjithashtu më fleksibël dhe më i pajtueshëm se funksioni ISNULL ose shprehja CASE.

konkluzioni

Në këtë postim në blog, mësuam se si të përdorim funksionin COALESCE në SQL Server për të trajtuar vlerat NULL në pyetjet tona. Ne pamë disa shembuj se si të shfaqim një vlerë të paracaktuar kur një kolonë është NULL, ose të kombinojmë disa kolona në një dhe të zgjedhim vlerën e parë jo-NULL. Ne krahasuam gjithashtu funksionin COALESCE me metoda të tjera si ISNULL dhe CASE, dhe diskutuam avantazhet dhe disavantazhet e tyre.