SQL Serverdə COALESCE funksiyasından necə istifadə etmək olar

Sorğularınızda NULL dəyərləri idarə etməli olduğunuz bir vəziyyətlə heç qarşılaşmısınızmı? Məsələn, sütun NULL olduqda defolt dəyəri göstərmək və ya birdən çox sütunu birinə birləşdirib NULL olmayan ilk dəyəri seçmək istəyə bilərsiniz. Bu bloq yazısında biz sizə SQL Server-də COALESCE funksiyasından bu və digər tapşırıqları yerinə yetirmək üçün necə istifadə edəcəyinizi göstərəcəyik.

COALESCE funksiyası nədir?

COALESCE funksiyası ifadələrin siyahısını qiymətləndirən və NULL olmayan birincini qaytaran SQL Serverdə daxili funksiyadır. Bütün ifadələr NULL olarsa, funksiya NULL qaytarır.

COALESCE funksiyasının sintaksisi:

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

İfadələr istənilən növ ola bilər, lakin onlar bir-biri ilə uyğun olmalıdır. Nəticənin məlumat növü ən yüksək üstünlüyə malik ifadə ilə müəyyən edilir.

COALESCE funksiyasından necə istifadə etmək olar

SQL Server-də COALESCE funksiyasından necə istifadə olunacağına dair bəzi nümunələrə baxaq.

Misal 1: Sütun NULL olduqda standart dəyəri göstərin

Tutaq ki, bəzi məhsullar, məsələn, onların adı, qiyməti və kateqoriyası haqqında məlumatları saxlayan Products adlı cədvəlimiz var. Bəzi məhsullarda kateqoriya təyin olunmur, ona görə də Category sütunu onlar üçün NULL-dur.

Məhsulları kateqoriyaları ilə göstərmək, lakin NULL dəyərlərini 'Naməlum' kimi standart dəyərlə əvəz etmək istəsək, COALESCE funksiyasından aşağıdakı kimi istifadə edə bilərik:

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

Nəticə belədir:

Gördüyünüz kimi, COALESCE funksiyası NULL deyilsə Category dəyərini qaytarır, əks halda 'Naməlum' qaytarır.

Nümunə 2: Birdən çox sütunu birinə birləşdirin və ilk qeyri-NULL dəyəri seçin

Tutaq ki, bəzi kontaktlar, məsələn, onların adı, e-poçtu, telefonu və ünvanı kimi məlumatları saxlayan Contacts adlı başqa bir cədvəlimiz var. Bəzi kontaktlarda bütün bu təfərrüatlar doldurulmur, ona görə də bəzi sütunlar onlar üçün NULL-dur.

E-poçt, telefon və ünvan arasında ilk qeyri-NULL dəyər olan kontaktları onların üstünlük verdiyi əlaqə metodu ilə göstərmək istəyiriksə, COALESCE funksiyasından aşağıdakı kimi istifadə edə bilərik:

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

Nəticə belədir:

Gördüyünüz kimi, COALESCE funksiyası hər bir əlaqə üçün e-poçt, telefon və ünvan arasında ilk qeyri-NULL dəyəri qaytarır.

Bunu köhnə üsulla necə idarə etmək olar və COALESCE nə təmin edir

COALESCE funksiyası SQL Serverdə təqdim edilməzdən əvvəl sorğularımızda NULL dəyərləri idarə etmək üçün başqa üsullardan istifadə etməli olduq. Məsələn, biz ISNULL funksiyasından və ya CASE ifadəsindən istifadə edə bilərik.

ISNULL funksiyası iki arqument götürür və NULL deyilsə birincisini qaytarır, əks halda ikincisini qaytarır. Misal üçün:

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

Bu sorğu COALESCE-dən iki arqumentlə istifadə etməklə eyni nəticəni verir. Bununla belə, ISNULL və COALESCE arasında bəzi fərqlər var:

  • ISNULL yalnız iki arqumenti qəbul edir, COALESCE isə istənilən sayda arqumenti qəbul edə bilər.
  • ISNULL nəticə üçün birinci arqumentin məlumat növündən istifadə edir, COALESCE isə CASE ifadəsi qaydalarına əməl edir və ən yüksək prioritetli dəyərin məlumat tipini qaytarır.
  • ISNULL yalnız bir dəfə qiymətləndirilir, COALESCE isə bir neçə dəfə qiymətləndirilə bilər. Bu, xüsusən də alt sorğulardan və ya qeyri-deterministik funksiyalardan istifadə edərkən nəticələrin performansına və ardıcıllığına təsir göstərə bilər.

CASE ifadəsi müxtəlif şərtlər əsasında müxtəlif hərəkətləri yerinə yetirməyə imkan verən şərti ifadədir. Misal üçün:

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

Bu sorğu COALESCE-dən iki arqumentlə istifadə etməklə eyni nəticəni verir. Bununla belə, CASE və COALESCE arasında bəzi fərqlər var:

  • CASE COALESCE-dən daha ətraflı və mürəkkəbdir, xüsusən də çoxsaylı ifadələrlə işləyərkən.
  • CASE yalnız NULL dəyərləri yoxlayan COALESCE-dən daha mürəkkəb məntiq və şərtləri idarə edə bilər.
  • CASE və COALESCE sorğu optimallaşdırıcısından və icra planından asılı olaraq fərqli performans təsirləri ola bilər.

Gördüyünüz kimi, COALESCE funksiyası SQL Serverdə NULL dəyərləri idarə etmək üçün daha sadə və ardıcıl üsul təqdim edir. O, həmçinin ISNULL funksiyasından və ya CASE ifadəsindən daha çevik və uyğundur.

Nəticə

Bu bloq yazısında sorğularımızda NULL dəyərləri idarə etmək üçün SQL Serverdə COALESCE funksiyasından necə istifadə edəcəyimizi öyrəndik. Sütun NULL olduqda defolt dəyəri göstərməyin və ya bir neçə sütunu birinə birləşdirərək ilk qeyri-NULL dəyəri seçməklə bağlı bəzi nümunələri gördük. Biz həmçinin COALESCE funksiyasını ISNULL və CASE kimi digər üsullarla müqayisə etdik və onların üstünlüklərini və mənfi cəhətlərini müzakirə etdik.