SQL dilində istənilən məlumatın idarə edilməsi və manipulyasiyası üçün bir çox güclü vasitələr mövcuddur. Bu vasitələrdən ikisi — CASE WHEN
və WHERE
— tez-tez qarışdırıla bilər, lakin onların məqsəd və istifadəsi tamamilə fərqlidir. Gəlin, bu iki ifadənin fərqlərini sadə və aydın şəkildə nəzərdən keçirək.
WHERE
: Məlumatın filtrələnməsi
WHERE
şərti SQL sorğusunda verilənləri süzgəcdən keçirmək üçün istifadə olunur. Bu ifadə yalnızca sorğu başladıqda icra olunur və nəticə dəstəyi ancaq müəyyən şərtlərə uyğun olan sətirləri qaytarır.
Məqsəd: Sətirləri seçmək.
Misal: Aşağıdakı sorğu yalnız maaşı 5000-dən böyük olan işçiləri qaytaracaq:
SELECT *
FROM employees
WHERE salary > 5000;
CASE WHEN
: Dinamik dəyərlərin yaradılması
CASE WHEN
isə bir sütunun və ya ifadənin dəyərini dinamik olaraq dəyişmək üçün istifadə olunur. Bu şərt filtrasiya etmir, əksinə yeni dəyərlər yaradır və ya nəticə dəstində mövcud olan məlumatları manipulyasiya edir.
Məqsəd: Şərtə əsaslanaraq dəyərləri dəyişmək və ya təyin etmək.
Misal: Aşağıdakı sorğu maaşına əsasən işçiləri 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 Necə Birlikdə İstifadə Etmək Olar?
Hər iki ifadə birlikdə istifadə oluna bilər. Məsələn, əvvəlcə məlumatı filtr edib, sonra onu CASE WHEN
ilə dəyişdirə bilərsiniz:
SELECT
name,
salary,
CASE
WHEN salary > 5000 THEN 'Premium'
ELSE 'Standard'
END AS tier
FROM employees
WHERE salary > 3000;
Burada:
WHERE
maaşı 3000-dən böyük olanları filtr edir.CASE WHEN
isə filtrdən keçən maaşlara əsaslanaraq dəyərləri dəyişir.
Əsas Fərqlər
Funksional fərq:
WHERE
sətirləri sorğunun başlanğıcında filtr edir və yalnız şərtə uyğun olan sətirləri nəticəyə daxil edir. Məsələn, bir cədvəldə maaşı 5000-dən az olan işçiləri nəticəyə daxil etmək istəmirsinizsə, WHERE
bunu təmin edir. Digər tərəfdən, CASE WHEN
verilənlərin özünü dəyişdirir və ya manipulyasiya edir. Yəni, yeni sütunlar və ya şərtə əsaslanan dəyərlər yaradır. Bu, sorğu nəticəsində məlumatları daha çevik formada təqdim etmək üçün istifadə olunur.
Yer fərqi:
WHERE
ifadəsi sorğunun əvvəlində, əsasən FROM
və ya JOIN
ifadələrindən dərhal sonra istifadə edilir. Bu, məlumatın əvvəlcədən süzgəcdən keçirilməsini təmin edir. CASE WHEN
isə daha çox SELECT
bölməsində və ya nəticələrdə manipulyasiya etmək üçün istifadə olunur. Yəni, filtrasiya yox, məlumatın formalaşdırılması üçün işləyir.
Nəticəyə təsir:
WHERE
istənməyən sətirləri tamamilə xaric edir, yəni onlar sorğunun nəticəsinə daxil olmur. CASE WHEN
isə sətirləri xaric etmir; əksinə, şərtlərə əsasən yeni dəyərlər yaradır. Bu, xüsusilə hesablama və kateqoriyalaşdırma üçün faydalıdır.
Əsas sual: Məlumatı seçmək istəyirəm, yoxsa dəyişmək?
- Seçim etmək istəyirsinizsə,
WHERE
istifadə edin. - Dəyərləri manipulyasiya etmək istəyirsinizsə,
CASE WHEN
-ə müraciət edin.
Xülasə: Nə Zaman Hansını İstifadə Etməliyik?
- Məlumatı süzgəcdən keçirmək istəyirsinizsə,
WHERE
istifadə edin. - Dinamik sütunlar və ya şərtli dəyərlər yaratmaq istəyirsinizsə,
CASE WHEN
seçin.