MS SQL’de T-SQL yapısında da koşullu sorgular oluşturma ihtiyacı duyabiliriz. Tıpkı programlama dillerinde olduğu gibi koşul sonucu TRUE ve FALSE mantıksal yapısına göre işlemler ele alınırlar. IF kullanımını syntax olarak aşağıdaki gibi üç şekilde olabilir.
IF koşul durum
IF koşul
durum
IF koşul BEGIN
durum1
varsa durum2 durum3 şeklinde devam eder
END
Genel olarak kullanımlarda ben 3. yapıyı tercih ediyorum. Hem kodun okunabilirliği daha iyi hem de herhangi bir hata olduğunda daha net şekilde görülebilir ve düzenlenebilir bir yapıda. Şimdi bir kaç örnekle IF kullanımını görelim. AdventureWorks2012 veritabanı üzerinde çalışlıyorum. Yeni bir sorgu penceresi açtım.
Şimdi bir değişken oluşturalım INT tipinde olsun. Daha sonra Sales.Customer tablosundaki verilerin satır sayısını bulalım ve bunu bu değişken içine atalım. Daha sonra eğer bu değer 100’den fazla ise ekrana “Satır sayısı 100 den fazladır.” yazalım.
DECLARE @SatirSayisi INT; SELECT @SatirSayisi = COUNT(*) FROM Sales.Customer; IF @SatirSayisi > 100 BEGIN PRINT 'Satır sayısı 100 den fazladır.'; END; GO
Şimdi de Person.Person tablosundaki BusinessEntityID değeri 1 olan verinin FirstName ve LastName alanlarını oluşturacağımız AdSoyad değişkeni içine alalım. Daha sonra sırası ile bu veri içinde Ken ve Katty ifadeleri geçiyor mu bakalım. Önce Ken varmı bakıcaz, eğer ken varsa Ken ifadesi geçiyor yazalım.
DECLARE @AdSoyad NVARCHAR(50); SELECT @AdSoyad = FirstName + ' ' + LastName FROM Person.Person WHERE BusinessEntityID = 1; IF CHARINDEX('Ken',@AdSoyad) > 0 BEGIN PRINT 'Veri satırı içinde KEN mevcut'; END;
Şimdi bir de bakalım Katty var mı, varsa Katty ifadesi geçiyor yazalım.
DECLARE @AdSoyad NVARCHAR(50); SELECT @AdSoyad = FirstName + ' ' + LastName FROM Person.Person WHERE BusinessEntityID = 1; IF CHARINDEX('Katty',@AdSoyad) > 0 BEGIN PRINT 'Veri satırı içinde KATTY mevcut'; END;
Bunun sonucunda bir şey yazmaz, sadece Command(s) completed successfully. yazar. Çünkü koşul tam değil, sadece değişken oluşturulmuştur, dolayısı ile onayı değişken oluşturuldu diye verir.
Sorgulardan görüleceği üzere sadece IF var ve koşul doğru ise durumda belirtilen gerçekleştiriliyor.
Merhaba. C# form uzerinde accsess veritabanina bagli datagride veri cekerken kosullu sorgulama mumkunmu? ( If, else , when , then ) gibi sorgular