Önceki bölümlerde, veri dönüşümü işlemleri için yerleşik skaler fonksiyonların nasıl kullanıldığını gördük. Bu bölümde, bir ifadeyi işleyip skaler sonuç döndüren mantıksal fonksiyonların nasıl kullanıldığını öğreneceğiz.

Fonksiyonlarla Mantıksal Test Yazma

Bir ifadenin veri türünü doğrulamak için ISNUMERIC fonksiyonu kullanılır. Bu fonksiyonla input ifadesini test ederek integer, decimal, money, floating point ve real dahil herhangi bir sayısal türe dönüştürülebilirse 1 değerini döndürür, dönüştürülemezse 0 döndürür.

TSQL örnek veri tabanını kullanılan aşağıdaki örnekte, sayısal posta kodlu çalışan kayıtları döndürülmektedir:

SELECT empid, lastname, postalcode
FROM HR.Employees
WHERE ISNUMERIC(postalcode)=1;

Sonuç:

empid lastname postalcode
----------- -------------------- ----------
1 Davis 10003
2 Funk 10001
3 Lew 10007
4 Peled 10009
5 Buck 10004
6 Suurs 10005
7 King 10002
8 Cameron 10006
9 Dolgopyatova 10008
IIF ile Koşullu Testler Uygulamak

IIF, SQL Server’da bulunan bir mantıksal fonksiyondur. Microsoft Excel®’de Visual Basic for Applications kullandıysanız, veya Microsoft Access® kullandıysanız, veya SQL Server Reporting Services’da ifadeler oluşturduysanız, IIF kullanmış olabilirsiniz.

VBA, Excel ve Access’te olduğu gibi, IIF fonksiyonu üç input parametresi kabul eder: Gerçekleştirilecek mantıksal test, test true olarak değerlendirilirse döndürülecek değer ve test false veya bilinmeyen olarak değerlendirilirse döndürülecek değer. Aşağıda IIF fonksiyonu kullanımı gösterilmiştir:

SELECT IIF(<Boolean expression>,<value_if_TRUE>,<value_if_FALSE_or_UNKNOWN);

IIF fonksiyonunu, iki olası dönüş değeri olan bir CASE ifadesinin kısayol yaklaşımı olarak da düşünebilirsiniz. CASE ifadesinde olduğu gibi, bir IIF fonksiyonunu başka bir IIF fonksiyonu içerisinde maksimum 10 seviyeye kadar iç içe kullanabilirsiniz.

Aşağıdaki örnekte, birim fiyatlarına göre ürünler için “high” veya “low” şeklinde etiketler döndürmek için IIF fonksiyonu kullanılmıştır:

SELECT productid, unitprice,
IIF(unitprice > 50, 'high','low') AS pricepoint
FROM Production.Products;

Sonuç:

productid unitprice pricepoint
----------- --------------------- ----------
7 30.00 low
8 40.00 low
9 97.00 high
17 39.00 low
18 62.50 high
Bir Listeden CHOOSE ile Öğe Seçme

CHOOSE fonksiyonu, index değerine uyan öğeyi seçerek listeden bir öğe döndürür. Aşağıda bu fonksiyonun kullanım şekli gösterilmiştir:

SELECT CHOOSE(<index_value>,<item1>, <item2>[,...]);

Aşağıdaki örnekte ise, input değerinde bir kategori ismi döndürmek için CHOOSE kullanır:

SELECT CHOOSE (3, 'Beverages', 'Condiments', 'Confections') AS choose_result;

Sonuç:

choose_result
-------------
Confections

Not: CHOOSE ifadesine sağlanan dizin değeri listedeki bir değere karşılık gelmezse, NULL değer döndürülür.

Kaynak:
CHOOSE (Transact-SQL)
IIF (Transact-SQL)