SQL-də CASE WHEN və WHERE İfadələrinin Fərqləri: Sadə İzah
SQL dilində məlumatların idarə olunması və dəyişdirilməsi üçün çoxsaylı funksional vasitələr mövcuddur. Bu vasitələrdən ən çox rast gəlinənlər — CASE WHEN və WHERE ifadələridir. Hər iki ifadə bəzən qarışdırılsa da, onların istifadə məqsədi və tətbiq sahəsi fərqlidir. İndi bu iki ifadəni sadə və başa düşülən formada müqayisə edək.
WHERE: Verilənlərin Süzgəcdən Keçirilməsi
WHERE ifadəsi SQL sorğularında məlumatların süzgəcdən keçirilməsi üçün istifadə edilir. Bu şərt sorğunun işlənməsinin əvvəlində tətbiq olunur və yalnız müəyyən şərtlərə cavab verən sətirlər nəticəyə daxil edilir.
Məqsəd: Müəyyən kriteriyalara uyğun olan məlumatların seçilməsi.
Nümunə:
Aşağıdakı sorğu yalnız maaşı 5000 AZN-dən yüksək olan işçiləri seçir:
SELECT *
FROM employees
WHERE salary > 5000;
CASE WHEN: Məlumatların Şərtə Əsasən Dəyişdirilməsi
CASE WHEN ifadəsi isə məlumatı süzgəcdən keçirmək üçün deyil, şərtlərə əsasən yeni dəyərlər yaratmaq və ya mövcud dəyərləri dəyişdirmək üçün istifadə olunur. Bu üsul nəticə dəstində dinamizm yaratmağa imkan verir.
Məqsəd: Şərtlərə uyğun olaraq sütun dəyərlərini dəyişdirmək və ya yenidən formalaşdırmaq.
Nümunə:
Aşağıdakı sorğu işçilərin maaşlarına görə onları kateqoriyalara ayırır:
SELECT
name,
salary,
CASE
WHEN salary > 5000 THEN 'Yüksək'
WHEN salary BETWEEN 3000 AND 5000 THEN 'Orta'
ELSE 'Aşağı'
END AS salary_category
FROM employees;
Hər İkisini Birlikdə Necə İstifadə Etmək Mümkündür?
WHERE və CASE WHEN ifadələri bir sorğuda eyni anda istifadə oluna bilər. Məsələn, əvvəlcə məlumatlar WHERE ilə süzgəcdən keçirilir, daha sonra isə CASE WHEN ilə dəyişiklik edilir:
SELECT
name,
salary,
CASE
WHEN salary > 5000 THEN 'Premium'
ELSE 'Standard'
END AS tier
FROM employees
WHERE salary > 3000;
Bu misalda:
-
WHERE yalnız maaşı 3000 AZN-dən yüksək olan işçiləri seçir;
-
CASE WHEN seçilmiş işçiləri müxtəlif kateqoriyalara bölür.
Əsas Fərqlər
Funksional fərq:
-
WHERE məlumatları sorğunun başlanğıcında filtr edir və uyğun gəlməyən sətirləri tamamilə çıxarır.
-
CASE WHEN isə mövcud məlumatlar üzərində dəyişikliklər aparır və yeni dəyərlər təyin edir.
İstifadə yeri fərqi:
-
WHERE ifadəsi adətən FROM və JOIN əmrlərindən dərhal sonra istifadə edilir.
-
CASE WHEN isə əsasən SELECT hissəsində və bəzən ORDER BY və ya HAVING bölmələrində tətbiq edilir.
Nəticəyə təsiri:
-
WHERE şərtə cavab verməyən sətirləri tamamilə sorğudan kənarlaşdırır.
-
CASE WHEN isə mövcud sətirləri saxlayaraq onların dəyərlərini dəyişdirir.
Hansı Halda Hansını Seçmək Lazımdır?
-
Əgər məlumatları seçmək və filtrasiya etmək istəyirsinizsə — WHERE istifadə edin.
-
Əgər verilənlərə şərtə əsasən yeni dəyərlər təyin etmək istəyirsinizsə — CASE WHEN ifadəsinə müraciət edin.
Yekun
CASE WHEN və WHERE SQL proqramlaşdırmasında özünəməxsus funksiyalara malikdir. Onları düzgün formada tətbiq etmək verilənlər bazası ilə işləyərkən dəqiq və effektiv nəticələr əldə etməyə imkan verir. Hər iki ifadənin doğru seçilməsi sorğuların həm performansına, həm də nəticələrin keyfiyyətinə müsbət təsir göstərir.