NULL yönetimi (COALESCE/NVL/NULLIF/IS NULL)
Oracle
-- COALESCE: ilk NULL olmayanı döndürür (standart)
SELECT ad, COALESCE(telefon, cep, 'yok') AS iletisim FROM musteri;
-- Oracle'a özgü NVL / NVL2
SELECT NVL(bakiye, 0) FROM musteri;
SELECT NVL2(indirim, 'var', 'yok') FROM siparis;
-- NULLIF ve IS NULL
SELECT NULLIF(a, b) FROM t; -- a=b ise NULL
SELECT ad FROM musteri WHERE telefon IS NULL;NULL (bilinmeyen değer) yönetimi için: COALESCE listedeki ilk NULL olmayanı döndürür (standart, çok argümanlı). Oracle'a özgü NVL(a,b) iki argümanlı karşılıktır; NVL2 NULL/ dolu durumuna göre farklı değer verir. NULLIF(a,b) eşitse NULL üretir. NULL testi daima IS NULL / IS NOT NULL ile yapılır (= NULL çalışmaz).
PostgreSQL
SELECT ad, COALESCE(telefon, cep, 'yok') AS iletisim FROM musteri;
SELECT NULLIF(bolen, 0) FROM t; -- 0'a bölmeyi engelle
SELECT ad FROM musteri WHERE telefon IS NULL;
-- Oracle NVL karşılığı COALESCE'tirPostgreSQL standart COALESCE, NULLIF ve IS NULL/IS NOT NULL sunar; Oracle'ın NVL'si yerine COALESCE kullanılır. NULL karşılaştırması için = değil IS kullanılır; iki NULL'ı eşit saymak gerekirse 'IS NOT DISTINCT FROM' operatörü işe yarar.
MySQL
SELECT ad, COALESCE(telefon, cep, 'yok') AS iletisim FROM musteri;
-- MySQL kısayolu: IFNULL (iki argüman)
SELECT IFNULL(bakiye, 0) FROM musteri;
SELECT NULLIF(a, b) FROM t;
SELECT ad FROM musteri WHERE telefon IS NULL;MySQL/MariaDB standart COALESCE ve NULLIF'i destekler; iki argümanlı kısayol olarak IFNULL(a,b) vardır (Oracle NVL benzeri). NULL-güvenli eşitlik için <=> operatörü kullanılır (iki NULL'ı eşit sayar). NULL testi IS NULL / IS NOT NULL ile yapılır.
SQL Server
SELECT ad, COALESCE(telefon, cep, 'yok') AS iletisim FROM musteri;
-- SQL Server kısayolu: ISNULL (iki argüman)
SELECT ISNULL(bakiye, 0) FROM musteri;
SELECT NULLIF(a, b) FROM t;
SELECT ad FROM musteri WHERE telefon IS NULL;SQL Server standart COALESCE (çok argümanlı, veri tipini yükselterek) ve iki argümanlı ISNULL(a,b) sunar; ikisi ince farklarla ayrışır (COALESCE standart ve tip önceliği daha esnektir). NULLIF ve IS NULL da desteklenir. ISNULL Oracle NVL'nin karşılığıdır (isim benzerdir).
MongoDB
// COALESCE karşılığı: $ifNull
db.musteri.aggregate([
{ $project: { ad: 1,
iletisim: { $ifNull: ["$telefon", "$cep", "yok"] } } }
])
// NULL / alan yok kontrolü:
db.musteri.find({ telefon: { $in: [null] } })MongoDB aggregation'da COALESCE karşılığı $ifNull operatörüdür (birden çok argüman, ilk null/eksik olmayanı döndürür). Sorguda { alan: null } hem değeri null olan hem de alanı hiç olmayan belgeleri eşler; ayrımı { alan: { $type: 'null' } } veya $exists ile netleştirirsiniz.
Redis
# Redis'te NULL yerine 'anahtar/alan yok' kavramı vardır:
EXISTS musteri:1 # anahtar var mı?
HGET musteri:1 telefon # alan yoksa nil döner
GET yok_olan # (nil)Redis'te SQL anlamında NULL yoktur; karşılığı 'anahtar yok' veya Hash alanının bulunmaması durumudur ve komutlar bu durumda nil döndürür. Varsayılan değer mantığı (COALESCE gibi) uygulama tarafında nil kontrolüyle uygulanır. Alan varlığı HEXISTS ile denetlenir.
Elasticsearch
# Alan yoksa varsayılan atama (missing bucket / null_value)
# Sorguda alanı olmayanları bulma:
GET musteri/_search
{ "query": { "bool": { "must_not": { "exists": { "field": "telefon" } } } } }
# Mapping'de null_value ile boşları belirli değere eşleElasticsearch'te null veya eksik alanlar 'exists' sorgusuyla denetlenir (must_not exists = alanı olmayanlar). COALESCE benzeri varsayılan için mapping'de 'null_value' tanımlanır ya da agregasyonlarda 'missing' parametresiyle boşlara bir değer atanır. Runtime/script ile de varsayılan üretilebilir.