NULL Fonksiyonlar
Merhaba, bugün sizlere SQL Oracle dilinde null değerlerle ilgili fonksiyonlardan bahsedeceğim. Öncelikle null değerinin ne anlama geldiğini hatırlayalım. Yazılım dilinde "null" hiçbir değeri olmayan, uzunluğu sıfır olarak kabul edilen bir kavramdır. "Null" değerler 0 veya boşluk değillerdir, çünkü 0 bir number olduğu gibi boşluk da bir char'dır. Bu yüzden çoğu yazılım dillerinde null değerlerle baş etmek için geliştirilmiş özel fonksiyonlar bulunmaktadır.
IS NULL/ IS NOT NULL
Oracle/PLSQL 'de değerlerin null olup olmadığını test etmek için IS NULL ve IS NOT NULL expression'ları kullanılır. Oracle'da eşitlik operatorleriyle (=) bir değerin null olup olmadığı kontrol edilemez, sonuç unknown döner. Unknown dönen bir sonuç tablodan kayıt getirmez ama "False" ile aynı olmadığı için boolean sorgularda sorun yaratabilir. Bu yüzden IS NULL ile kontrol edilmesi daha garantidir.
Aşağıdaki sorgu manager_id değerinde NULL değerini taşıyan tüm employees tablosunu getirir.
SELECT * FROM employees WHERE manager_id IS NULL;
Aşağıdaki statement da last_name değeri NULL olan bütün kayıtları employees tablosundan siler.
DELETE FROM employees WHERE last_name IS NULL;
Aşağıdaki sorguda (null= null) mantıken doğru gibi gelebilir ama equality operatorlerde null değerler kontrol edilmediği için unknown döner, bu yüzden hiçbir zaman ekrana 'a' yazdırmaz.
select id, case when null = null
then 'a'
end as doop from employees;
Aşağıdaki sorguda Is Null ile kontrol edildiği için kontrol bloğuna girerek ekrana 'a' yazdırır.
select id, case when null is null
then 'a'
end as doop from employees;
NVL
Null değerler matematiksel işlemlere girdiklerinde sonucunda yine null verdiği için bazen 0'la veya herhangi bir değerle null değerleri replace etmemiz gerekebilir. NVL fonksiyonu syntax'ı kabaca şu şekildedir :
NVL (expr1, expr2)
//pseudo code
if expr1 is NULL
then return expr2
Örneğin aşağıdaki sorgu employer name değeri null olan bütün kayıtlara "n/a" yazar.
SELECT id, nvl( employer_name, 'n/a') FROM employees;
NVL2
NVL2 fonksiyonu, nvl fonksiyonunun bir üst modeli olarak düşünülebilir. Null değerleri daha iyi test ettiği için nvl2 daha çok kullanılmaktadır. Syntax'ı şu şekildedir:
NVL (expr1, expr2, expr3);
//pseudo code
if expr1 is NOT NULL
then return expr2
else
return expr3
NULLIF
NULLIF fonksiyonu verilen iki parametreyi birbiriyle karşılaştırır. Eşitse Null return eder, değilse ilk verilen parametreyi döndürür. Syntax'ı şu şekildedir:
NULLIF ( expr1, expr2);
//pseudo code
if expr1 is equal to expr2
then return NULL
else return expr1
Yukarıdaki NULLIF statement'ı aynı zamanda aşağıdaki case when bloğuna da mantık olarak eşittir:
CASE WHEN expr1 = expr2 THEN NULL
ELSE expr1 END
NULLIF kullanıma örnek verecek olursak aşağıdaki kod bloğu doğal olarak ZERO_DIVIDE exception hatası verecektir.
select 5/0 from dual;
//ORA- 01476 - divisor is equal to zero
Fakat bu exception'ı NULLIF fonksiyonunu kullanarak ele alabiliriz, çünkü null değerler aritmetik operasyonlar sonucunda yine null return ederler, yani yutan elemandırlar. Aşağıdaki sorgunun sonucu null döner:
select 5/nullif(0,0) from dual;
Fonksiyonlar – Konu Anlatımı ve Soru Çözümü
YanıtlaSilLise hayatınızdan itibaren matematik dersini zorlaştıran, özellikle çok fazla çalışmayan öğrenciler için bela olan ve neredeyse her türlü alanda karşımıza çıkan fonksiyonlar konusunu işleyeceğiz. TYT Matematik fonksiyonlar konu anlatımı içeriğine baktığımızda ayt kısmına nazaran daha az, daha basit ve daha anlaşılabilir içerikler ile karşılaşacağız. Fakat ilkokulda öğrendiğiniz sayısal konularından sonra böyle bir olgu sizi biraz...
fonksiyonlar soru çözümü