NULL değerlerle iş yaparken özel yöntemler gereklidir. Önceki bölümlerde, NULL değer testi için ISNULL fonksiyonu görmüştük. Bu bölümde kullanılan başka fonksiyonlar da göreceğiz.

ISNULL ile NULL Değerleri Dönüştürmek

SQL Server’da veri tipi dönüşümlerine ek olarak, NULL değerinin değiştirilmesi veya dönüşümü fonskyionlar vardır. Değer değiştirme işlemi, hem COALESCE ile hem de ISNULL ile yapılabilmektedir.

Aşağıdaki sorguda TSQL örnek veri tabanında region sütununda bulunan null değerler için ISNULL fonksiyonu kullanarak NULL değerlerin ‘N/A’ değeri ile değiştirilmesi gösterilmiştir:

SELECT custid, city, ISNULL(region, 'N/A') AS region, country
FROM Sales.Customers;

Sonuç:

custid city region country
----------- --------------- --------------- ---------------
40 Versailles N/A France
41 Toulouse N/A France
43 Walla Walla WA USA
45 San Francisco CA USA
COALESCE Fonksiyonu

ISNULL fonksiyonu, ANSI standardı olmadığından bunun yerine COALESCE kullanılması önerilmektedir. COALESCE fonksiyonu, input olarak bir veya daha fazla ifadeyi alır ve soldan sağa doğru bulduğu ilk NULL olmayan ifadeyi döndürür. Input olarak iki ifade aldığında ISNULL fonksiyonu gibi davranır. İkiden fazla bağımsız değişken alabilen bu fonksiyonu, ISNULL kullanan CASE ifadesinin alternatifi olarak kullanılabilir. Tüm bağımsız değişkenler NULL ise bu NULL değeri döndülür.

Syntax aşağıdaki gibidir:

SELECT COALESCE(<expression_1>[, ...<expression_n>];

Aşağıdaki örnekte ülke, bölge ve şehir sütunları birleştirilmektedir. Bölge sütunundaki NULL olan değerler, boşluk değeri ile değiştirilerek yeni sütun oluşturulmaktadır:

SELECT custid, country, region, city,
country + ',' + COALESCE(region, ' ') + ', ' + city as location
FROM Sales.Customers;

Sonuç:

custid country region city location
------ ------- ------ ----------- ----------------------
17 Germany NULL Aachen Germany, , Aachen
65 USA NM Albuquerque USA,NM, Albuquerque
55 USA AK Anchorage USA,AK, Anchorage
83 Denmark NULL Århus Denmark, , Århus
NULLIF Fonksiyonu

NULLIF fonksiyonu iki bağımsız değişken alır ve her ikisi de eşleşirse NULL döndürür. Eşit değillerse ilk ifade döndürülür. Veri temizleme gibi işlemlerde kullanışlı uygulamalara sahiptir.

Aşağıdaki örnekte, NULLIF fonksiyonu, boş bir string değerini (varsa) NULL ile değiştirir, ancak işçinin ikinci ismi varsa null yerine ikinci ismin baş harfini döndürür:

SELECT empid, lastname, firstname, NULLIF(middleinitial,' ') AS middle_initial
FROM HR.Employees;

Sonuç:

empid lastname firstname middle_initial
----------- -------------------- ---------- --------------
1 Davis Sara NULL
2 Funk Don D
3 Lew Judy NULL
4 Peled Yael Y

Kaynak:
ISNULL (Transact-SQL)
COALESCE ile ISNULL Karşılaştırması(Transact-SQL)
NULLIF (Transact-SQL)