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 Dizimi: TRY_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 Dizimi: TRY_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