Transact SQL – Ansi_Nulls Komutu ve Null Değerinin Diğer Durumları

Merhaba,

Biz yazılım uzmanlarının en büyük hobilerinden biriside veritabanındaki null değerler üzerinde geliştirdikleri prosedürel algoritmalar olsa gerek 🙂 Tablolarımızda ki kimi değerler bizim için salt kayıtlarken kimileri ise istatiksel raporlamalarda kullanacağımız organize veriler bütünüdür. Ee haliyle bu organize – ilişkisel verilerimiz arasında gezinen Null değerler veritabanı işlemlerinde bizlere oldukça zorluk çıkarmaktadır. Bu zorluklar aşılamayacak cinsten olmasa da, mantıksal olarak hesaplama hataları yapmamıza yahut yanlış sonuçlar elde etmemize sebebiyet vermektedir. İşte bu içeriğimizde Null değerler üzerinde hakimiyet açısından bilgilerimizi biraz daha detaylandıracak, bir yandan da Ansi_Nulls komutunun işlevini açıklayacağız.

Öncelikle SQL Server’da kullandığımız Aggregate fonksiyonlarımızın Null değerlerle olan ilişkisinden başlayalım. Biliyorsunuz ki, kişisel yazmış olduğumuz prosedürel algoritmalar dışında genellikle temel istatiksel çalışmalarda(ortalama, max – min değerler, toplama, eleman sayısı vs.) Aggregate fonksiyonlar işimizi görmektedir. Amma velakin bu fonksiyonlar tablomuzda bulunan Null değerleri dikkate almamaktadırlar. Böyle bir durumda birazdan yapacağımız örnek uygulamada olduğu gibi yanlış istatiksel bilgiler elde edebilmemiz olasıdır.

Transact SQL - Ansi_Nulls Komutu ve Null Değerinin Diğer Durumları
Şimdi yukarıdaki tabloyu göze alalım ve üzerinde aşağıdaki sorguları çalıştıralım.
Transact SQL - Ansi_Nulls Komutu ve Null Değerinin Diğer DurumlarıTransact SQL - Ansi_Nulls Komutu ve Null Değerinin Diğer Durumlarıgncenter size-full wp-image-5442″ />
Gördüğünüz gibi 7 satır içerisinden Null değere sahip olanlar hesaba katılmamışlardır. Aynı şekilde diğer Aggrate fonksiyonlarınıda örneklendireceğimiz sorgularımıza bakalım.
Transact SQL - Ansi_Nulls Komutu ve Null Değerinin Diğer Durumları

Evet… Herşey görüldüğü gibi… Aslında Aggrate fonksiyonlarının Null değerleri hesaba katmaması gayet işe yarar bir durum olabilir. Tabi eğer siz bu özelliği biliyorsanız…

Bir diğer durum ise Group By işlemidir ki, Null değerler yaptığımız hesaplara ister istemez karışmaktadırlar.
Transact SQL - Ansi_Nulls Komutu ve Null Değerinin Diğer Durumları

Gördüğünüz üzere gruplanan PersonelID kolonunda Null değerlerde hesaba katılmıştır.

İşte… Null değerleri sorgudan sorguya fark eden bir işleve sahipler. Bunun sebebi kullanılan fonksiyonlar, yapılar yahut algoritmaların Null değerlere özel farklı yaklaşımlar sergilemesinden kaynaklanmaktadır. O yüzden Null değerlerin yönetimi veritabanı işlemlerinde oldukça önemlidir. Bunun yanında ilgili veritabanı asıl herhangi bir arayüz tarafından kullanılacağı durumlarda bu Null değerlerin ayıklanması ve yönetilmesi çok daha zorlaşmaktadır. Bu yüzden Null değerler dikkate değer bir noktadır.

Şimdide Ansi_Nulls komutunu ele alalım.

Ansi_Nulls Komutu

Ansi_Nulls komutu, where şartlarında kontrol edilen eşitlik yahut eşit değillik durumlarında Null değerlerin dikkate alınıp alınmayacağını belirlememizi sağlayan bir özelliktir. Prototipi aşağıdaki gibidir…

SET ANSI_NULLS [ ON | OFF ]

Ansi_Nulls özelliği “On” değerini aldığı vakit, eşitlik yahut eşit değillik şartlarında Null değerlere karşı false sonucu döndürülür. Bunun sebebi sorgu aramalarına Null değerlerin dahil edilmemesinden kaynaklanmaktadır. Bilakis “Off” değeri aldığı vakit Null değerler sorgu sonucuna dahil edileceğinden dolayı şartın durumuna göre gerekli true/false değerini dönecektir.

Ansi_Nulls özelliği varsayılan olarak “On” değerine sahiptir.

Null değerler üzerine bir hayli mürekkep akıtabiliriz lakin ben burada konumuzu noktalamak istiyorum. Nihayetinde veritabanının hangi yapılarının bu değere karşı nasıl reaksiyon verdiğini bilmemiz ve buna göre algoritmalarımızı şekillendirmemiz yeterli olacaktır.

Sonraki yazılarımızda görüşmek üzere…
Şimdilik hoşçakalın…
İyi çalışmalar…

Bunlar da hoşunuza gidebilir...

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

CAPTCHA (Şahıs Denetim Kodu) Resmi

*

Copy Protected by Chetan's WP-Copyprotect.