lostyazilim
tr.link

Php null ve boş tırnak arasındaki farklar VE Sorgu içinde NOT IN, IS NOT NULL, vs

5 Mesajlar 1.100 Okunma
acebozum
tr.link

BEYAZMASTER BEYAZMASTER YÜCE ALLAH'IN aciz 1 kulu Kullanıcı
  • Üyelik 04.02.2020
  • Yaş/Cinsiyet 43 / E
  • Meslek Yazılım...
  • Konum Diğer
  • Ad Soyad O** B**
  • Mesajlar 597
  • Beğeniler 154 / 153
  • Ticaret 0, (%0)
Merhabalar...


Tam hakim olmak için çaba sarfettiğim bir konuyu sizlere danışmakta fayda gördüm;


İçi boş tırnak kullanmak HER ZAMAN VE HER YERDE tüm BOŞ lukları ifade etmeye yeter mi?

Yoksa içi boş tırnağın ve null'un farklı anlamlara geldiği, ortaya farklı sonuçlar çıkarttığı yerler,durumlar var mıdır?


100% aynı mıdır?

Değiller ise FARKLILIKLARI NELERDİR?







&



Eğer 100% aynı iseler;

Sorgu içinde boş sütunları yada boş olmayan sütunları sorgulamanın en ideal yolu nedir?


IS NULL
IS NOT NULL

IN ('')

NOT IN ('')

columname =''
columname !=''




&



Eğer 100% aynı değil iseler;

Her ikisini de sorgu içinde sorgulamak istersek en ideal yöntem sizce ne olabilir?

+

Her ikisini de illaki NOT IN içinde kullanmak istersek nasıl bir kod yazmalıyız?





Vakit ayıracak ustalara şimdiden teşekkürler...
 

 

ÖNCE "İYİ,DOĞRU,GÜZEL BİR İNSAN" OLMAK (VEFA,TEVAZZU,NAİFLİK,SAYGI,...) GEREK!
Sonra wm oluruz.
elektronikssl
webimgo

ikodev ikodev Developer Kullanıcı
  • Üyelik 08.05.2015
  • Yaş/Cinsiyet 28 / E
  • Meslek Developer
  • Konum Samsun
  • Ad Soyad İ** Ş**
  • Mesajlar 1020
  • Beğeniler 321 / 321
  • Ticaret 19, (%100)
Örnek üzerinden gidelim (böyle bir veritabanımızın olduğunu düşünelim) ;

ID - AD - tel
1 - ilker - 0552xxx
2 - ahmet - (yok NULL)

WHERE tel IS NULL > ahmeti getirecektir
WHERE tel IS NOT NULL" > ilkeri getirecektir
WHERE tel <> '' > ilkeri getirecektir
WHERE tel != "" > ilkeri getirecektir
WHERE tel = '' > hiç bir veri getirmeyecektir (buraya dikkat) bizim ahmet adlı değerimiz NULL yani hiç bir zaman veri eklenmemiş bir değere sahip o yüzden olmayanı getiremeyiz. = '' dersek eğer bir boş string atmış oluruz bizim hiç bir dize değerimiz olmadığı için ahmette beraber hiç bir sonuç dönmeyecektir. Taa ki ahmet değeri NULL değerinden çıkarılıp boş bir string atılana kadar. Yani NULL değeri ile boş string farklı bir şeydir.

WHERE tel IN ('0552xxx') > ilkeri getirecektir
(IN Sorgusunda hedef sütununda aranacak değer net olmalıdır. Bu tel='0552xxx' ile aynıdır. Tek farklı sürekli eşittir kullanmaktansa birden fazla veriyi çekmek istiyorsanız IN ile bunu başarabilirsiniz. Yani bir şehir tablomuz var. hedef sütun ilce. ilce IN('Samsun', 'İzmir') diyerek ilcesi Samsun ve İzmir olanları getirecektir. )

NOT IN ise tam tersi belirtilen değerler "gelmesin" gibi.

Hız faktörü olarak;

IS NULL, = '' Bundan hızlıdır.
Sebebi MySQLde belirli kalıpların olması. NULL bilindik bir methoddur. Ama sizin belirlediğiniz tırnak içerisinde yazılan string program tarafından bilinmez talep olarak atılır. Tek tek sorgu yapar.

Bu yüzden boş olan değerleri x = '' yerine x IS NULL derseniz boş olanları daha hızlı getirecektir.

Aynı şey IS NOT NULL içinde geçerli zaten ingilizce tabirden NOT'ın ne işe yaradığını belli ediyor. IS NULL > boş olanları, IS NOT NULL > boş olmayanları getir gibi.
BEYAZMASTER

kişi bu mesajı beğendi.

BEYAZMASTER BEYAZMASTER YÜCE ALLAH'IN aciz 1 kulu Kullanıcı
  • Üyelik 04.02.2020
  • Yaş/Cinsiyet 43 / E
  • Meslek Yazılım...
  • Konum Diğer
  • Ad Soyad O** B**
  • Mesajlar 597
  • Beğeniler 154 / 153
  • Ticaret 0, (%0)
edcsmile Üstadım çok detaylı ve NET bir katkı daha sundunuz gene.


Son örneğiniz ve özellikle de son cümleniz tamamen aydınlattı konuyu...

"Yani NULL değeri ile boş string farklı bir şeydir."

Aradığım temel cevap buydu.



VE şu bilgi de bir o kadar değerli idi;

IS NULL, = '' Bundan hızlıdır.



Şimdi şunları öğrenmek için çaba srfedeceğim;

1) Sütunun boş olması ile null olması kıyaslandığında hangisi daha avantajlıdır?

2) Veri güncellerken / silerken sütunu null hale getirmek için nasıl bir kod kullanmak gerekir?


Fakat sizi artık yormayalım, yeterince yorduk bugün... Araştırmaya devam edeceğim...


Vakit ayırdınız, emek verdiniz, çok sağolun...

HAKKINIZI HELAL EDİN...
 

 

ÖNCE "İYİ,DOĞRU,GÜZEL BİR İNSAN" OLMAK (VEFA,TEVAZZU,NAİFLİK,SAYGI,...) GEREK!
Sonra wm oluruz.

ikodev ikodev Developer Kullanıcı
  • Üyelik 08.05.2015
  • Yaş/Cinsiyet 28 / E
  • Meslek Developer
  • Konum Samsun
  • Ad Soyad İ** Ş**
  • Mesajlar 1020
  • Beğeniler 321 / 321
  • Ticaret 19, (%100)
1) Sütunun boş olması ile null olması kıyaslandığında hangisi daha avantajlıdır?

NULL olması tabi avantajlı SQL tabanlı tüm aracılar Mysql,mssql vbvb bir verinin sütunu NULL ise yer kaplamaz. Boş string'de tabikide veritabanını öldürmez ama bu ufak tefek gözden kaçan şeyler bile programlama yaparken "acaba niye çalışmıyor" sorunu oluyor. O yüzden düzenli kullanmak en güzeli :)

2) Veri güncellerken / silerken sütunu null hale getirmek için nasıl bir kod kullanmak gerekir?

SET sütunAdı = NULL
Demek yeterlidir (Güncelleme yaparken). Veriye ait sütunu NULL hale getirir :)
(Silme işleminde zaten pek bir önemi yok :D Direkt o veri yok olacağı için)

Helal olsun ne demek ben teşekkür ederim güzel övgüleriniz için :) İyi akşamlar dilerim
BEYAZMASTER

kişi bu mesajı beğendi.

wmaraci
wmaraci

BEYAZMASTER BEYAZMASTER YÜCE ALLAH'IN aciz 1 kulu Kullanıcı
  • Üyelik 04.02.2020
  • Yaş/Cinsiyet 43 / E
  • Meslek Yazılım...
  • Konum Diğer
  • Ad Soyad O** B**
  • Mesajlar 597
  • Beğeniler 154 / 153
  • Ticaret 0, (%0)
1) Artık NULL favorimdir. ;)

("acaba niye çalışmıyor" sorunu oluyor. O yüzden düzenli kullanmak en güzeli)

Bu cümleyi; "veri tabanını mümkün olduğunca hafif kılmak gerekir" olarak tercüme ettim kısmen ama "acaba niye çalışmıyor" kısmı açıkta kaldı, bağlantıyı kuramadım...

Bu da dağınık kalsın üstadım... :)

2) Süper...

(Silme işleminde zaten pek bir önemi yok ;) Direkt o veri yok olacağı için) => Çok güldüm buna... Çok haklısınız... ;)

Silme mi dedim ben! :S :)

Biraz kodlara ara verip film seyretsem iyi olacak sanırım... :)



Sıfır övgü, NE VARSA O... Birazcık da VEFA...


Hayırlı geceler dilerim ikodev üstadım...
ikodev

kişi bu mesajı beğendi.

ÖNCE "İYİ,DOĞRU,GÜZEL BİR İNSAN" OLMAK (VEFA,TEVAZZU,NAİFLİK,SAYGI,...) GEREK!
Sonra wm oluruz.
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al