MSSQL 2012 ile Gelen 3 Dönüştürme Fonksiyonu: TRY_CONVERT, TRY_PARSE ve PARSE


Merhaba Arkadaşlar,

Önceki yazımda MSSQL 2012 ile gelen string fonksiyonlarından bahsetmiştim. Bu yazımda TRY_CONVERT, TRY_PARSE ve PARSE fonksiyonlarından bahsedeceğim.

TRY_CONVERT

Tanım: MSSQL 2012’den önce CAST ve CONVERT fonksiyonlarını kullanıyorduk fakat oluşan hatalar bizi bayağı uğraştırıyordu. Şimdi ise dönüştürme işlemi başarısız olması durumunda

Söz DizimiTRY_CONVERT ( data_type [ ( length ) ], expression [, style ] )

Kullanımı:

SELECT CAST(‘Mahmut Can Sözeri’ AS int)
–Conversion failed when converting the varchar value ‘Mahmut Can Sözeri’ to data type int.

SELECT CONVERT(int,’Mahmut Can Sözeri’)
–Conversion failed when converting the varchar value ‘Mahmut Can Sözeri’ to data type int.

SELECT TRY_CONVERT(INT,’Mahmut Can Sözeri’)
–NULL

SELECT IIF(TRY_CONVERT(INT,’Mahmut Can Sözeri’) IS NULL,-1,TRY_CONVERT(INT,’Mahmut Can Sözeri’))

Select CONVERT(nvarchar(10),getdate(),101)
–03/07/2012

SELECT TRY_CONVERT(datetime2, ’12/31/2012′)
–2012-12-31 00:00:00.0000000

SELECT TRY_CONVERT(datetime2, ’31/12/2012′)
–NULL

SELECT TRY_CONVERT(xml, 4)
–Explicit conversion from data type int to xml is not allowed.

TRY_PARSE 

Tanım: TRY_CONVERT ile benzer şekilde çalışır. Bir bakıma TRY CAST diyebiliriz. Ayrıca TRY_PARSE fonksiyonu string’ten diğer tiplere çevirme yapar. Dönüştürülmek istenen tip geriye döndürür, eğer başarısız olursa işlem geriye NULL döner.

Söz DizimiTRY_PARSE ( string_value AS data_type [ USING culture ] )

Kullanımı:

SELECT TRY_PARSE(‘Mahmut Can Sözeri’ AS int)
–NULL

SELECT TRY_PARSE(‘0’ AS numeric(10,5))
–0.00000

SELECT TRY_PARSE(’04/28/1986′ AS datetime2 USING ‘en-US’)
–1986-04-28 00:00:00.0000000

SELECT TRY_PARSE(’04/28/1986′ AS datetime2 USING ‘tr-TR’)
–NULL

SELECT TRY_PARSE(CONCAT(’28’,’/’,’04’,’/’,’1986′) AS datetime2 USING ‘tr-TR’)
–1986-04-28 00:00:00.0000000

PARSE

Tanım: PARSE fonksiyonu string tipten hedef tip gibi kullanmamızı sağlar. .NET geliştiricileri parse metotundan hemen hatırlayacaklardır.

Söz Dizimi: PARSE ( string_value AS data_type [ USING culture ] )

Kullanımı:

SELECT PARSE(‘Monday, 28 April 1986’ AS datetime2 USING ‘tr-TR’)
–1986-04-28 00:00:00.0000000

SELECT PARSE(‘199,99 TL’ AS money USING ‘tr-TR’)
–199,99

Declare @para as varchar(10) = ‘$100.00’
Declare @kultur as varchar(10) = ‘en-US’
Select Result = IIF(TRY_PARSE(@para AS money using @kultur) Is Not Null,PARSE(@para AS money using @kultur),’Dönüşüm mümkün değil’)

Bir sonraki yazımda farklı bir yenilik ile görüşmek üzere

İyi çalışmalar

, ,

  1. Leave a comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s