15 Aralık 2011 Perşembe

Oracle PL/SQL Soru & Cevaplar 3: Boş kaydedilen karakter değeri ile null değeri arasında ne fark vardır?

Soru: Boş kaydedilen karakter değeri ile null değeri arasında ne fark vardır? Bir alan üzerinden  ='' şeklinde boş bir string sorguladığımda ve null değerleri sorguladığımda farklı değerler elde ediyorum.


Cevap: Boş bir string Oracle'da null bir değeri temsil eder.

Aşağıda oluşturulan kullanici tablosu üzerinden örnek vermek gerekirse.

create table kullanici(kullanici_id number, kullanici_adi varchar2(100));

Şimdi oluşturduğumuz tabloya sırasıyla boş bir değer içeren ve null değeri içeren iki kayıt ekleyelim.

insert into test (kullanici_id, kullanici_adi) values (100, null);
insert into test (kullanici_id, kullanici_adi) values (101, '');


İlk insert cümlesi tabloya kullanici_adi null olan bir değer eklemektedir.
İkinci insert cümlesi ise tabloya boş bir karakter değeri eklemektedir. (iki tek tırnak birleşik şekilde)

Şimdi eklediğimiz değerler üzerinden tablodan sorgu alalım.

Select * from kullanici where kullanici adi = '';

Sorgu sonucu olarak yukarıda boş olarak eklediğimiz değerin dönmesini bekliyoruz fakat sorgu sonucu hiç bir satır getirmeyecektir.

Birde aynı tablodan kullanici adi null olan bilgileri sorgulayalım.

Select * from kullanici where kullanici_adi is null;

Sorgu sonucu olarak eklediğimiz null değeri içeren 1 satır dönmesini bekliyoruz fakat 2 satır döndüğünü görüyoruz.
Bunun sonucu olarak Oracle da boş karakter olarak eklenen değerlerin tablo içerisinde null değerlere eşit olduğunu görüyoruz.

Sırası gelmişken bahsetmekte fayda var, null değerler içeren tablolarda kullanmaya alışkın olduğumuz (=,<,>,v.s.) gibi eşitlik ifadelerini kullanamayız. Bunların yerine null işlemleri için is null veya is not null ifadelerini kullanabiliriz.
Daha karmaşık sorgular için ise Oracle'daki null kontrolü yapan çeşitli fonksiyonları (NULLIF, NVL, NVL2) kullanabiliriz. Bu fonksiyonlar hakkında daha detaylı bilgi için "Oracle NULL Kontrol Fonksiyonları" başlıklı yazıya göz atabilirsiniz.

Hiç yorum yok:

Yorum Gönder

Popüler Yayınlar