Select Case Yapısı

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.

Telefon +90 505 747 42 84
Email info@devedijital.com
Adres
Tacettin Veli Mahallesi Halit Narin Caddesi Bahadır Plaza Kat:11 Daire:41 38230 Deve Dijital Melikgazi/Kayseri/Türkiye