ISNULL ve COALESCE Kullanımı

Yazıyı okumadan kodu çalıştırabilirsiniz :)
SELECT COALESCE(NULLNULLNULL'Oktay'NULL'ALTAN');




String verileri birbiri ile toplarken dikkat etmemiz gereken bir nokta vardı. Buna göre eğer bir alan içindeki veri NULL ise toplama işlemi sonucu geriye her ne olursa olsun NULL dönerdi. Yani diyelim ki iki alandan string verileri toplamak istiyorsunuz yani birleştirmek istiyorsunuz. Ad alanı bazı satırlarda dolu ama bazılarında NULL, dikkat boşluk karakteri demiyorum NULL diyorum ikisi farklı şeyler. Boşluk karakteri NULL değildir, bir ASCII karşılığı vardır. Neyse dediğim gibi ad alanı bazılarında dolu bazılarında NULL, ama soyadların hepsi dolu. Ve siz Ad ve Soyadı birleştirdiğiniz de normal şartlar altında ad içeriği NULL olanlar birleşim sonucu her ne kadar soyad içeriği dolu olsa da geriye NULL döner. Bunun örneklemesini yapmıştık.

Şimdi bu yazımda ISNULL ve COALESCE deyimleri ile içeriğinde NULL verilerin olabildiği bir alanda string verileri toplarken geriye NULL dönmesini nasıl önleriz, bunu öğreneceğiz.

ISNULL deyimi şöyle kullanılır, iki parametre alır ve bunların ikisini de kullanmak zorunludur, öncelikle kontrol etmek istediğimiz kolon adı sonra NULL olanların içeriğini değiştirmek istediğimiz veri..

COALESCE deyiminin çalışması ISNULL’dan biraz farklıdır. Herhangi bir sayıda parametre alabilir ve ilk NULL olmayan değeri döner. T-SQL programlama geliştiricilerin tercihi genellikle COALESCE deyimidir. Çünkü COALESCE deyimi ANSI standartlarını karşılar, ISNULL karşılamaz. (ANSI – American National Standart Institues ve yazılımın temelinde standartları belirlemiştir) Ayrıca COALESCE çokyönlüdür. Şimdi kullanımlarını örnekleyeyim : (AdventureWorks veritabanı üzerinde çalışıyorum)

SELECT BusinessEntityID, FirstName + ' ' +
ISNULL(MiddleName,'') + ' ' + LastName
AS "Ad Soyad" FROM Person.Person


Person.Person tablosundan BusinessEntityID alanını ve FirstName, MiddleName, Lastname alanlarını birleştirerek aldım. MiddleName alanı için ISNULL ile kontrol yaptım, eğer NULL veri varsa bunu boşlukla değiştir dedim ve daha sonra bu 3 alanı Ad Soyad kolonu altında göster dedim.











Hiç yorum yok:

Yorum Gönder