DLL'leri işleme
NULL değeri, değer yok veya bilinmeyen anlamına gelir. Sıfır veya boş, hatta boş dize anlamına gelmez. Bu değerler bilinmiyor. Null değer, örneğin bir müşteri henüz bir e-posta adresi vermemişse, henüz sağlanmamış değerler için kullanılabilir. Daha önce gördüğünüz gibi, bir değer hedef veri türüyle uyumlu değilse bazı dönüştürme işlevleri tarafından null değer de döndürülebilir.
NULL ile başa çıkmak için genellikle özel adımlar uygulamanız gerekir. NULL gerçekten değer olmayan bir değerdir. Bilinmiyor. Hiçbir şeye eşit değildir ve hiçbir şeye eşit değildir. NULL, herhangi bir şeyden büyük veya daha küçük değildir. Ne olduğu hakkında bir şey söyleyemeyiz, ancak bazen NULL değerlerle çalışmamız gerekir. Neyse ki, T-SQL NULL değerlerin dönüştürülmesi veya değiştirilmesi için işlevler sağlar.
ISNULL
ISNULL işlevi iki bağımsız değişken alır. birincisi test ettiğimiz bir ifadedir. İlk bağımsız değişkenin değeri NULL ise, işlev ikinci bağımsız değişkeni döndürür. İlk ifade null değilse, değiştirilmeden döndürülür.
Örneğin, veritabanındaki Sales.Customer tablosunun NULL değerlere izin veren bir MiddleName sütunu içerdiğini varsayalım. Bu tabloyu sorgularken, sonuçta NULL döndürmek yerine "Yok" gibi belirli bir değer döndürmeyi seçebilirsiniz.
SELECT FirstName,
ISNULL(MiddleName, 'None') AS MiddleIfAny,
LastName
FROM Sales.Customer;
Bu sorgunun sonuçları şuna benzer olabilir:
İlk İsim
MiddleIfAny
Soyadı
Orlando
N.
Güler
Keith
Hiçbiri
Howard
Donna
F.
Güven
...
...
...
Not
NULL ile değiştirilen değer, değerlendirilen ifadeyle aynı veri türü olmalıdır. Yukarıdaki örnekte MiddleName bir varchar olduğundan değiştirme değeri sayısal olamaz. Ayrıca, verilerde normal değer olarak görünmeyecek bir değer seçmeniz gerekir. Bazen verilerinizde hiçbir zaman görünmeyecek bir değer bulmak zor olabilir.
Önceki örnek kaynak tabloda NULL değeri işledi, ancak BIR TRY_CONVERT işlevini BIR ISNULL işlevinin içine yerleştirme de dahil olmak üzere NULL döndürebilecek herhangi bir ifadeyle ISNULL kullanabilirsiniz.
BİRLEŞMEK
ISNULL işlevi ANSI standardı olmadığından COALESCE işlevini kullanmak isteyebilirsiniz. COALESCE, her biri bir ifade olan değişken sayıda bağımsız değişken alabilmesi açısından biraz daha esnektir. Listedeki NULL olmayan ilk ifadeyi döndürür.
Yalnızca iki bağımsız değişken varsa, COALESCE ISNULL gibi davranır. Ancak, ikiden fazla bağımsız değişkenle COALESCE, ISNULL kullanılarak çok parçalı case ifadesine alternatif olarak kullanılabilir.
Tüm bağımsız değişkenler NULL ise, COALESCE NULL döndürür. Tüm ifadeler aynı veya uyumlu veri türlerini döndürmelidir.
Söz dizimi şu şekildedir:
SELECT COALESCE ( expression1, expression2, [ ,...n ] )
Aşağıdaki örnek, çalışanın haftalık kazançları hakkında bilgi içeren üç sütunu bulunan HR.Wages adlı kurgusal bir tablo kullanır: saatlik ücret, haftalık maaş ve satılan birim başına komisyon. Ancak, bir çalışan yalnızca bir ödeme türü alır. Her çalışan için bu üç sütundan birinin değeri olur, diğer ikisi NULL olur. Her çalışana ödenen toplam tutarı belirlemek için COALESCE kullanarak yalnızca bu üç sütunda bulunan null olmayan değeri döndürebilirsiniz.
SELECT EmployeeID,
COALESCE(HourlyRate * 40,
WeeklySalary,
Commission * SalesQty) AS WeeklyEarnings
FROM HR.Wages;
Sonuçlar şuna benzer olabilir:
Çalışan Kimliği
Haftalık Kazançlar
1
899.76
2
1001.00
3
1298.77
...
...
NULLIF (SQL'de kullanılan, iki ifadenin eşit olması durumunda sonuç olarak NULL döndüren bir fonksiyon)
NULLIF işlevi, belirli koşullar altında NULL döndürmenize olanak tanır. Bu işlev, boş veya yer tutucu karakterleri NULL ile değiştirmek istediğinizde veri temizleme gibi alanlarda yararlı uygulamalara sahiptir.
NULLIF iki bağımsız değişken alır ve eşdeğerse NULL döndürür. Eşit değilse, NULLIF ilk bağımsız değişkeni verir.
Bu örnekte NULLIF, 0 indirimini NULL ile değiştirir. 0 değilse indirim değerini döndürür:
SELECT SalesOrderID,
ProductID,
UnitPrice,
NULLIF(UnitPriceDiscount, 0) AS Discount
FROM Sales.SalesOrderDetail;
Sonuçlar şuna benzer olabilir:
SatışSiparişKimliği
ProductID
Birim Fiyat
İskonto
71774
836
356.898
SIFIR
71780
988
112.998
0.4
71781
748
818.7
SIFIR
71781
985
112.998
0.4
...
...
...
...