﻿
{"id":5437,"date":"2016-12-09T07:25:17","date_gmt":"2016-12-09T07:25:17","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=5437"},"modified":"2019-02-08T21:22:01","modified_gmt":"2019-02-08T21:22:01","slug":"transact-sql-ansi_nulls-komutu-ve-null-degerinin-diger-durumlari","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/transact-sql-ansi_nulls-komutu-ve-null-degerinin-diger-durumlari\/","title":{"rendered":"Transact SQL &#8211; Ansi_Nulls Komutu ve Null De\u011ferinin Di\u011fer Durumlar\u0131"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Biz yaz\u0131l\u0131m uzmanlar\u0131n\u0131n en b\u00fcy\u00fck hobilerinden biriside veritaban\u0131ndaki null de\u011ferler \u00fczerinde geli\u015ftirdikleri prosed\u00fcrel algoritmalar olsa gerek \ud83d\ude42 Tablolar\u0131m\u0131zda ki kimi de\u011ferler bizim i\u00e7in salt kay\u0131tlarken kimileri ise istatiksel raporlamalarda kullanaca\u011f\u0131m\u0131z organize veriler b\u00fct\u00fcn\u00fcd\u00fcr. Ee haliyle bu organize &#8211; ili\u015fkisel verilerimiz aras\u0131nda gezinen Null de\u011ferler veritaban\u0131 i\u015flemlerinde bizlere olduk\u00e7a zorluk \u00e7\u0131karmaktad\u0131r. Bu zorluklar a\u015f\u0131lamayacak cinsten olmasa da, mant\u0131ksal olarak hesaplama hatalar\u0131 yapmam\u0131za yahut yanl\u0131\u015f sonu\u00e7lar elde etmemize sebebiyet vermektedir. \u0130\u015fte bu i\u00e7eri\u011fimizde Null de\u011ferler \u00fczerinde hakimiyet a\u00e7\u0131s\u0131ndan bilgilerimizi biraz daha detayland\u0131racak, bir yandan da Ansi_Nulls komutunun i\u015flevini a\u00e7\u0131klayaca\u011f\u0131z.<\/p>\n<p>\u00d6ncelikle SQL Server&#8217;da kulland\u0131\u011f\u0131m\u0131z Aggregate fonksiyonlar\u0131m\u0131z\u0131n Null de\u011ferlerle olan ili\u015fkisinden ba\u015flayal\u0131m. Biliyorsunuz ki, ki\u015fisel yazm\u0131\u015f oldu\u011fumuz prosed\u00fcrel algoritmalar d\u0131\u015f\u0131nda genellikle temel istatiksel \u00e7al\u0131\u015fmalarda(ortalama, max &#8211; min de\u011ferler, toplama, eleman say\u0131s\u0131 vs.) Aggregate fonksiyonlar i\u015fimizi g\u00f6rmektedir. Amma velakin bu fonksiyonlar tablomuzda bulunan Null de\u011ferleri dikkate almamaktad\u0131rlar. B\u00f6yle bir durumda birazdan yapaca\u011f\u0131m\u0131z \u00f6rnek uygulamada oldu\u011fu gibi yanl\u0131\u015f istatiksel bilgiler elde edebilmemiz olas\u0131d\u0131r.<\/p>\n<p><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/12\/Transact-SQL-Ansi_Nulls-Komutu-ve-Null-De\u011ferinin-Di\u011fer-Durumlar\u0131.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/12\/Transact-SQL-Ansi_Nulls-Komutu-ve-Null-De\u011ferinin-Di\u011fer-Durumlar\u0131.png\" alt=\"Transact SQL - Ansi_Nulls Komutu ve Null De\u011ferinin Di\u011fer Durumlar\u0131\" width=\"341\" height=\"201\" class=\"aligncenter size-full wp-image-5440\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/12\/Transact-SQL-Ansi_Nulls-Komutu-ve-Null-De\u011ferinin-Di\u011fer-Durumlar\u0131.png 341w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/12\/Transact-SQL-Ansi_Nulls-Komutu-ve-Null-De\u011ferinin-Di\u011fer-Durumlar\u0131-300x177.png 300w\" sizes=\"auto, (max-width: 341px) 100vw, 341px\" \/><\/a><br \/>\n\u015eimdi yukar\u0131daki tabloyu g\u00f6ze alal\u0131m ve \u00fczerinde a\u015fa\u011f\u0131daki sorgular\u0131 \u00e7al\u0131\u015ft\u0131ral\u0131m.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/12\/Transact-SQL-Ansi_Nulls-Komutu-ve-Null-De\u011ferinin-Di\u011fer-Durumlar\u0131-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/12\/Transact-SQL-Ansi_Nulls-Komutu-ve-Null-De\u011ferinin-Di\u011fer-Durumlar\u0131-3.png\" alt=\"Transact SQL - Ansi_Nulls Komutu ve Null De\u011ferinin Di\u011fer Durumlar\u0131\" width=\"759\" height=\"204\" class=\"aligncenter size-full wp-image-5447\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/12\/Transact-SQL-Ansi_Nulls-Komutu-ve-Null-De\u011ferinin-Di\u011fer-Durumlar\u0131-3.png 759w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/12\/Transact-SQL-Ansi_Nulls-Komutu-ve-Null-De\u011ferinin-Di\u011fer-Durumlar\u0131-3-300x81.png 300w\" sizes=\"auto, (max-width: 759px) 100vw, 759px\" \/><\/a>gncenter size-full wp-image-5442&#8243; \/><\/a><br \/>\nG\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi 7 sat\u0131r i\u00e7erisinden Null de\u011fere sahip olanlar hesaba kat\u0131lmam\u0131\u015flard\u0131r. Ayn\u0131 \u015fekilde di\u011fer Aggrate fonksiyonlar\u0131n\u0131da \u00f6rneklendirece\u011fimiz sorgular\u0131m\u0131za bakal\u0131m.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/12\/Transact-SQL-Ansi_Nulls-Komutu-ve-Null-De\u011ferinin-Di\u011fer-Durumlar\u0131-2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/12\/Transact-SQL-Ansi_Nulls-Komutu-ve-Null-De\u011ferinin-Di\u011fer-Durumlar\u0131-2.png\" alt=\"Transact SQL - Ansi_Nulls Komutu ve Null De\u011ferinin Di\u011fer Durumlar\u0131\" width=\"360\" height=\"257\" class=\"aligncenter size-full wp-image-5444\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/12\/Transact-SQL-Ansi_Nulls-Komutu-ve-Null-De\u011ferinin-Di\u011fer-Durumlar\u0131-2.png 360w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/12\/Transact-SQL-Ansi_Nulls-Komutu-ve-Null-De\u011ferinin-Di\u011fer-Durumlar\u0131-2-300x214.png 300w\" sizes=\"auto, (max-width: 360px) 100vw, 360px\" \/><\/a><\/p>\n<p>Evet&#8230; Her\u015fey g\u00f6r\u00fcld\u00fc\u011f\u00fc gibi&#8230; Asl\u0131nda Aggrate fonksiyonlar\u0131n\u0131n Null de\u011ferleri hesaba katmamas\u0131 gayet i\u015fe yarar bir durum olabilir. Tabi e\u011fer siz bu \u00f6zelli\u011fi biliyorsan\u0131z&#8230;<\/p>\n<p>Bir di\u011fer durum ise Group By i\u015flemidir ki, Null de\u011ferler yapt\u0131\u011f\u0131m\u0131z hesaplara ister istemez kar\u0131\u015fmaktad\u0131rlar.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/12\/Transact-SQL-Ansi_Nulls-Komutu-ve-Null-De\u011ferinin-Di\u011fer-Durumlar\u0131-3.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/12\/Transact-SQL-Ansi_Nulls-Komutu-ve-Null-De\u011ferinin-Di\u011fer-Durumlar\u0131-3.png\" alt=\"Transact SQL - Ansi_Nulls Komutu ve Null De\u011ferinin Di\u011fer Durumlar\u0131\" width=\"759\" height=\"204\" class=\"aligncenter size-full wp-image-5447\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/12\/Transact-SQL-Ansi_Nulls-Komutu-ve-Null-De\u011ferinin-Di\u011fer-Durumlar\u0131-3.png 759w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/12\/Transact-SQL-Ansi_Nulls-Komutu-ve-Null-De\u011ferinin-Di\u011fer-Durumlar\u0131-3-300x81.png 300w\" sizes=\"auto, (max-width: 759px) 100vw, 759px\" \/><\/a><\/p>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz \u00fczere gruplanan PersonelID kolonunda Null de\u011ferlerde hesaba kat\u0131lm\u0131\u015ft\u0131r.<\/p>\n<p>\u0130\u015fte&#8230; Null de\u011ferleri sorgudan sorguya fark eden bir i\u015fleve sahipler. Bunun sebebi kullan\u0131lan fonksiyonlar, yap\u0131lar yahut algoritmalar\u0131n Null de\u011ferlere \u00f6zel farkl\u0131 yakla\u015f\u0131mlar sergilemesinden kaynaklanmaktad\u0131r. O y\u00fczden Null de\u011ferlerin y\u00f6netimi veritaban\u0131 i\u015flemlerinde olduk\u00e7a \u00f6nemlidir. Bunun yan\u0131nda ilgili veritaban\u0131 as\u0131l herhangi bir aray\u00fcz taraf\u0131ndan kullan\u0131laca\u011f\u0131 durumlarda bu Null de\u011ferlerin ay\u0131klanmas\u0131 ve y\u00f6netilmesi \u00e7ok daha zorla\u015fmaktad\u0131r. Bu y\u00fczden Null de\u011ferler dikkate de\u011fer bir noktad\u0131r.<\/p>\n<p>\u015eimdide Ansi_Nulls komutunu ele alal\u0131m.<\/p>\n<h3>Ansi_Nulls Komutu<\/h3>\n<p>Ansi_Nulls komutu, where \u015fartlar\u0131nda kontrol edilen e\u015fitlik yahut e\u015fit de\u011fillik durumlar\u0131nda Null de\u011ferlerin dikkate al\u0131n\u0131p al\u0131nmayaca\u011f\u0131n\u0131 belirlememizi sa\u011flayan bir \u00f6zelliktir. Prototipi a\u015fa\u011f\u0131daki gibidir&#8230;<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nSET ANSI_NULLS &#x5B; ON | OFF ]\r\n<\/pre>\n<p>Ansi_Nulls \u00f6zelli\u011fi &#8220;On&#8221; de\u011ferini ald\u0131\u011f\u0131 vakit, e\u015fitlik yahut e\u015fit de\u011fillik \u015fartlar\u0131nda Null de\u011ferlere kar\u015f\u0131 false sonucu d\u00f6nd\u00fcr\u00fcl\u00fcr. Bunun sebebi sorgu aramalar\u0131na Null de\u011ferlerin dahil edilmemesinden kaynaklanmaktad\u0131r. Bilakis &#8220;Off&#8221; de\u011feri ald\u0131\u011f\u0131 vakit Null de\u011ferler sorgu sonucuna dahil edilece\u011finden dolay\u0131 \u015fart\u0131n durumuna g\u00f6re gerekli true\/false de\u011ferini d\u00f6necektir.<\/p>\n<p>Ansi_Nulls \u00f6zelli\u011fi varsay\u0131lan olarak &#8220;On&#8221; de\u011ferine sahiptir.<\/p>\n<p>Null de\u011ferler \u00fczerine bir hayli m\u00fcrekkep ak\u0131tabiliriz lakin ben burada konumuzu noktalamak istiyorum. Nihayetinde veritaban\u0131n\u0131n hangi yap\u0131lar\u0131n\u0131n bu de\u011fere kar\u015f\u0131 nas\u0131l reaksiyon verdi\u011fini bilmemiz ve buna g\u00f6re algoritmalar\u0131m\u0131z\u0131 \u015fekillendirmemiz yeterli olacakt\u0131r.<\/p>\n<p>Sonraki yaz\u0131lar\u0131m\u0131zda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u015eimdilik ho\u015f\u00e7akal\u0131n&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Biz yaz\u0131l\u0131m uzmanlar\u0131n\u0131n en b\u00fcy\u00fck hobilerinden biriside veritaban\u0131ndaki null de\u011ferler \u00fczerinde geli\u015ftirdikleri prosed\u00fcrel algoritmalar olsa gerek \ud83d\ude42 Tablolar\u0131m\u0131zda ki kimi de\u011ferler bizim i\u00e7in salt kay\u0131tlarken kimileri ise istatiksel raporlamalarda kullanaca\u011f\u0131m\u0131z organize veriler b\u00fct\u00fcn\u00fcd\u00fcr.&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":3415,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1082,22],"tags":[1565,896,245,1564,461,85],"class_list":["post-5437","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sql-server","category-veritabani","tag-ansi_nulls","tag-null","tag-sql-server","tag-sql-server-null-degerler","tag-t-sql","tag-transact-sql"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/5437","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=5437"}],"version-history":[{"count":1,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/5437\/revisions"}],"predecessor-version":[{"id":10391,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/5437\/revisions\/10391"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/3415"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=5437"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=5437"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=5437"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}