T-SQL CAST ve CONVERT Fonksiyonları

SQL Server’da CONVERT ve CAST operatörleri, bir veri türünü başka bir veri türüne dönüştürmek için kullanılır. Her ikisi de benzer işlev görür, ancak bazı farklılıkları vardır.

CAST ANSI SQL standardına uygundur ve bu nedenle diğer veri tabanı sistemlerinde de genellikle aynı şekilde çalışır.

CONVERT, SQL Server’a özgü bir fonksiyondur. Özellikle tarih-saat verilerini formatlama konusunda CAST’ten daha fazla kontrol sunar.

Genel dönüşümler için: CAST

Tarih-saat formatlama gerekiyorsa: CONVERT

CAST fonksiyonun örnek sözdizimi:

CAST(KOLON1 AS INT)

CONVERT fonksiyonun örnek sözdizimi:

CONVERT(NVARCHAR, KOLON1)

CAST dönüşüm işlemi ile ilgili genel örnekler aşağıdaki gibidir.

DECLARE @SONUC INT
DECLARE @SONUC2 DECIMAL(3,1)
DECLARE @TARIH VARCHAR(50)
-- String'i integer'a çevirme
SET @SONUC=CAST('2323' AS INT) ;
SELECT @SONUC*2
-- Float'ı decimal'a çevirme
SET @SONUC2 = CAST(12.345 AS DECIMAL(5,1)) ;
SELECT @SONUC2*2
-- Tarihi string'e çevirme
SET @TARIH=CAST(GETDATE() AS VARCHAR(20));
select @TARIH +'---'

Dönüşüm işlemlerinin sonucu aşağıdaki gibi görülmektedir.

CONVERT dönüşüm işlemi ile ilgili genel örnekler aşağıdaki gibidir.

-- String'i date'e çevirme (style parametresi ile)
SELECT CONVERT(DATETIME, '2023-12-31', 120) AS Tarih;

-- Float'ı string'e çevirme
SELECT CONVERT(VARCHAR(10), 12.345) AS Metin;

-- Tarihi farklı formatlarda gösterme
SELECT CONVERT(VARCHAR, GETDATE(), 101) AS 'ABD Formatı',  -- mm/dd/yyyy
       CONVERT(VARCHAR, GETDATE(), 103) AS 'İngiliz Formatı',  -- dd/mm/yyyy
	   CONVERT(VARCHAR, GETDATE(), 105) AS 'İtalyanca', -- dd-mm-yy
       CONVERT(VARCHAR, GETDATE(), 112) AS 'ISO Formatı';      --yyyymmdd
	  

Diğer tarih formatlama biçimlerini ilgili makalede görebilirsiniz.

Farklı tip kolonları birleştirmek için aşağıdaki komutlar kullanılmaktadır.

SELECT[FirstName] + ' '+ [LastName] + ModifiedDate 
FROM [AdventureWorks2017].[Person].[Person]

Kolon türleri farklı olduğu için aşağıdaki hata mesajıyla karşılaşırız.

Msg 241, Level 16, State 1, Line 1
Conversion failed when converting date and/or time from character string.

Tür dönüşüm operatörü olan convert ve cast işlemiyle İlgili tarih kolonuna tür dönüşümü yapalım.

SELECT[FirstName] + ' '+ [LastName] +'-----'+ cast(ModifiedDate as varchar) FROM [AdventureWorks2017].[Person].[Person]

SELECT[FirstName] + ' '+ [LastName] +'-----'+ convert(varchar,ModifiedDate) FROM [AdventureWorks2017].[Person].[Person]

SQL Server’da hata yönetimi için geliştirilmiş güvenli fonksiyonlar TRY_CAST ve TRY_CONVERT fonksiyonlarıdır.

Normal bir Cast işleminde aşağıdaki gibi işlem yapılırsa hata vermektedir.

SELECT CAST('ABC' AS INT); 

Try_cast komutunu kullandığımızda Null değerin geldiğini görmekteyiz.

Aynı hata TRY_CONVERT komutu kullandığımızda da almayız. Bunun gibi sorgularımda hata almamak için aşağıdaki yapıda kullanılabilir.

TRY_CAST ve TRY_CONVERT dönüşüm hatalarını NULL değere çevirerek sorgularınızın çökmemesini sağlar. Veri kalitesi düşük ortamlarda vazgeçilmez fonksiyonlardır.

Özellikle dış kaynaklardan gelen veya kullanıcı girdilerinin olduğu veritabanlarında hayat kurtarıcı bir fonksiyondur

Bu makalede CAST ve CONVERT fonksiyonlarını detaylı bir şekilde görmüş olduk. Başka makalede görüşmek dileğiyle..

“Ey inananlar! Sabır ve namazla yardım dileyin. Allah, muhakkak ki sabredenlerle beraberdir.” Bakara Suresi; 153. Ayet

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir