Anasayfa | Hakkımda | Kitaplarım | RSS Site içinde
Kategoriler
» SQL Server 2012
» SQL Server 2008
» C#
» MySQL
» Hayata Dair
» Güncel Haber-Duyuru
» Bir Soru Bir Cevap
» Oracle ve Diğer VTYS
» Java

SQL Server 2012 ile Gelen Yeni T-SQL Fonksiyonları

30.01.2012 00:00:00
Önümüzdeki aylarda piyasaya sürülmeye hazırlanan SQL Server 2012'de birazcık .NET tadı almaya hazır mısınız? TRY_PARSE, FORMAT, TRY_CONVERT... Şayet bir .NET Developer iseniz, bu fonksiyonların bir kısmı size hiç de yabancı gelmeyecek.

Operatör ile ilgili Fonkisyonlar

CONCAT Fonksiyonu ile Metinleri Ulamak

CONCAT fonksiyonu, SQL Server 2012 ile gelen bir fonksiyon olup, String ifadeleri uç uca eklemede + operatörüne göre bazı avantajlar sağlamaktadır. Örneğin, tip dönüşümlerine gerek duymaz ve NULL bir değer ulamaya katıldığında boşluk olarak eklenir. Bütün sonucu NULL haline getirmesine müsade edilmez. MySQL veritabanı yönetim sistemindeki CONCAT fonkisyonuna çok benzer. Genel kullanımı şu şekildedir.

CONCAT(sutun1,sutun2,[sutun3, ......, sutunN])

Örnek:

Yukarıdaki örneği tekrarlayacak olursak:

SELECT CONCAT(name , '  $', listPrice)
FROM production.Product
ORDER BY listPrice DESC


Şekil-1: CONCAT fonksiyonu ile değerler veri tipleri önemli olmaksızın VARCHAR tipler olarak uç uca eklenir.

IIF Fonksiyonu:

IF yapısı, bir SELECT cümlesi içerisinde bir çok sütun üstünde kullanmak gerektiğinde tercih edilebilir.

Örnek:

tblUrun tablosundaki ürünlerin Liste Fiyatı 1000'den pahalı ise 'pahalı', daha küçük veya eşitse de 'ucuz' etiketi ile bir fiyat yorumu sütunu oluşturalım:

SELECT  urunKod,listeFiyat,
	IIF(listeFiyat>1000,'pahalı', 'ucuz') AS fiyatYorum
FROM tblUrun


Şekil: IIF fonksiyonunun kullanımı

CHOOSE Fonksiyonu:

T-SQL'de CASE ile yapılabilecek bazı ufak işlemlerin yerine kullanılanılabilir ama kısıtlı bir kullanımı mevcut. Sadece, indeks sütununda geçen sayının yer aldığı elemanı döndürebilen bir fonksiyon olup oldukça düşük bir işlev sunmakta.

Örnek:

 DECLARE @indis INT=0
WHILE @indis<5
BEGIN
SET @indis +=1;
SELECT CHOOSE( @indis,'bir','iki','üç','dört','beş','altı');
END;


Şekil 3: CHOOSE fonksiyonu pek esnek olmasa da ardışık giden sayıların bir dize değer ile değiştirilmesine müsaade etmekte.

Dönüşüm ve Formatlandırma ile İlgili Fonkisyonlar

TRY_CONVERT Fonksiyonu:

SQL Server 2012 sürümü ile gelen bir fonksiyondur. Bir veri tipinden diğerine döndürmek için kullanılır. Şayet dönüştürme işlemi başarılı ise dönüştürülmüş değeri verir. Başarısız ise veya ilk değer NULL ise NULL değeri döndürür. Genel kullanımı şu şekildedir:

TRY_CONVERT (veritipi[(uzunluk)], sutun_ismi) 

Örnek:

5.20 değeri parasal türe dönüştürülebilir ama abcd değeri bir parasal değer ifade edemez. Bu yüzden parasal tipe döndürülemez.

SELECT TRY_CONVERT(MONEY,'5.20') AS Parasal,
TRY_CONVERT(MONEY,'abcd')  AS HataliParasal ;

Şekil 4: TRY_CONVERT fonksiyonun çalışması

PARSE Fonksiyonu:

SQL Server 2012 sürümü ile gelen bir fonksiyondur. Parse fonksiyonu, CAST ve CONVERT fonksiyonlarından farklı olarak sadece metin tutan verileri girdi olarak kabul eder ve bir metni tarih zaman veya tam sayı tiplerine dönüştürmek için kullanılır. Para birimi gibi ek göstergeler için kültür kodu parametre olarak verilebilir. Türkiye için kültür kodu "tr-TR" dir.

Genel kullanımı şu şekildedir:

PARSE(string_sutun_ismi AS hedef_tip [USING xx-XX])

Örnek:

tblUrun tablosunda yer alan fiyatları parasal tipe dönüştürerek gösterelim. Öncelikle VARCHAR'a dönüştürdüğümüze dikkat edin.

SELECT PARSE(CONVERT(VARCHAR(8),listeFiyat) AS MONEY
 USING 'tr-TR' ) as PARASAL
FROM tblUrun

Şekil 5: PARSE fonksiyonu, String değerleri tarihzaman ve INTEGER tiplere dönüştürmek için kullanılır

TRY_PARSE Fonksiyonu:

SQL Server 2012 sürümü ile gelen bir fonksiyondur. PARSE fonksiyonundan farklı olarak, dönüştürme işleminde başarılı olamazsa NULL döndürür. PARSE fonksiyonunun, başarılı olamazsa bir hata mesajı ile programın çalışmasını sonlandırmasını istemediğimiz durumlarda, TRY_PARSE fonksiyonu kullanılabilir.

Örnek:

5 değeri parasal bir tipe dönüştürülebilir. Ancak abc değeri parasal bir tipe dönüştürülemez. TRY_PARSE fonksiyonu, hata vermez ama NULL döndürür.

SELECT PARSE('5' AS MONEY) as PARASAL ,
 TRY_PARSE('abc' AS MONEY) as T_PARASAL

Şekil 6: PARSE ve TRY_PARSE fonksiyonlarının çalışma şekilleri 5 değerini TRY_PARSE ve abc değerini PARSE fonksiyonuna verdiğimizde hata alırız. Çünkü PARSE fonksiyonu TRY_PARSE gibi hataları tolere etmez.

FORMAT Fonksiyonu:

SQL Server 2012 sürümü ile gelen bir fonksiyondur. Bu fonksiyon, .NET ortamındaki bütün String formatlama işlevlerini SQL Server ortamına getirmiş bir fonksiyondur. Kolaylık ve pratikliğine bakıldığında sonraki sürümlerde veritabanı programcıları için CAST ve CONVERT fonksiyonlarının yerini alması muhtemel gibi görüyor.

Genel kullanımı şu şekildedir:

FORMAT(sutunAd, format [,kultur]) 

Özellikle, tarih zaman formatlama işlemlerinde, parasal değerlerin formatlanmasında ve sayıların formatlanmasında, yer yer FORMAT fonksiyonuna ihtiyaç duyabiliriz.

Örnek:

Bugünün tarihini alıp, tarih formatlama ile ilgili yapılabileceklerin bir listesi

SELECT 
FORMAT(GETDATE(),'d')		AS kisaTarih,
FORMAT(GETDATE(),'d','tr-TR')	AS turkTarihFormatiTR,
FORMAT(GETDATE(),'D','tr-TR')	AS uzunTarihFormatiTR,
FORMAT(GETDATE(),'T','tr-TR')	AS uzunZamanFormatiTR,
FORMAT(GETDATE(),'ddd','tr-TR')	AS haftaGunuTR,
FORMAT(GETDATE(),'ddd')		AS haftaGunu,
FORMAT(GETDATE(),'MMM','tr-TR')	AS ayTR,
FORMAT(GETDATE(),'yyyy','tr-TR')	AS yilTR,
FORMAT(GETDATE(),'yyyy.MM.dd HH:mm:ss') AS ozelformat
 

Şekil 7: FORMAT fonksiyonu ile tarih şekillendirme örnekleri

Örnek:

5 rakamı ile yapılabilecek

SELECT	FORMAT(5,'C','tr-TR')	AS TL, 
	 	FORMAT(5,'C','en-US')	AS USD,
		FORMAT(0.05,'P','tr-TR')	AS  yuzde,
		FORMAT(5,'N','tr-TR')	AS  ondalikTR, 
		FORMAT(5,'N','en-US')	AS  ondalikUSA

Şekil 8: FORMAT fonksiyonu ile parasal tiplerin ve sayıların formatlandırılması örnekleri

Yorumlar

rıdvan yorumladı(12.04.2012 10:29:12)
eline sağlık
eline sağlık güzel bir çalışma olmuş



Konuya müdahil olmak ister misiniz?
Başlık:  
İsim  :  
URL   :
Yorum