CASE komutu verileri istediğimiz herhangi bir kritere göre görüntülememizi sağlar. Gelin nasıl olduğunu inceleyelim.
CASE komutu verileri istediğimiz herhangi bir kritere göre görüntülememizi sağlar. Gelin nasıl olduğunu inceleyelim.
Seçme Sorgusunda Case kullanımı
mesaj tablosunda bir küçük değişiklik cinsiyeti alanı. (mesaj tablosuna pek lazım olmaz ama örneğimiz için pek mühim :))
adi | soyadi | yas | mesaji | tarih | cinsiyeti |
nvarchar(30) | nvarchar(30) | tinyint | nvarchar(MAX) | smalldatetime | bit |
T-SQL de 2 şekilde kullanımı vardır
1. Sadece eşitlik sınama
2. Tam sınama (eşitlik, büyük, <, <=, >=, is null )
iki kullanımdada ELSE kullanılabilir.
1. Eşitlik sınaması
cinsiyeti 1 ise bay 0 ise bayan olsun
select adi,
case cinsiyeti
when 1 then 'bay'
when 0 then 'bayan'
else 'belirtilmemiş'
end
as durum
from mesaj
Bu sorguda cinsiyeti=1 ise durum alanına bay yazacak
cinsiyeti=0 ise durum alanına bayan yazacak
cinsiyeti 1 ve 0 dan başka bir değer ise durum alanına belirtilmemiş yazacak.
Sorgu sonucunda adi,durum olmak üzere iki alandan oluşan kayıt sonucu döner.
2. Tam sınama
=, <, >, <=, >=, is null sınamalarının tamamının yapılabildiği case yapısıdır.
select adi,
case
when yas<20 then 'küçük'
when yas>20 then 'yetişkin'
when yas=20 then 'askerlik çağında'
else 'belirtilmemiş'
end
as durum
from mesaj
yas değeri 20'den küçük ise durum alanına küçük yazacak
yas değeri 20'den büyük ise durum alanına yetişkin yazacak
yas değeri 20 ise durum alanına askerlik çağında yazacak
yas alanında değer yoksa (NULL) belirtilmemiş yazacak.
else 'belirtilmemiş' yerine
when yas is null then 'belirtilmemiş' de yazılabilirdi. (Null mu sınaması, bu sınama =Null ile sınanamaz is null ile yapılmalıdır)
Sorgu sonucunda adi,durum olmak üzere iki alandan oluşan kayıt sonucu döner.
Not : Her iki case kullanımında da when den sonra belirtilen şartlar hiç sağlanamadı ise else den sonraki bölüm çalışır. Eğer else bölümü yok ise NULL değer döndürür.