SQL Server Kolon İçerisinde Virgül ile Ayrılan Değerleri Satıra Çevirmek

En çok yaşadığımız ya da eksik yaptığımız noktalardan bir taneside koştuğumuz teknolojinin özelliklerini kullanmamak veya diğer adı ile alışkanlıklarımızı değiştirmemek için savaş vermek. Teknoloji ekiplerinde görev alıpta bu dediklerimi uygulayan arkadaşlar güncel hayattan hep geri kalmış şekilde son teknolojiden uzak bir şekilde geliştirme yapmaktadırlar.

Şimdi bu konuya nerden geldiniz diye sorduğunuzu duyar gibiyim. Örnek üzerinden gidecek olur isek, koştuğunuz veritabanı platformu SQL SERVER  2016 ve siin kolon içerisinde virgül ile ayrılmış verilerin satırlara çevrilmesi istendi. Bun bir kaç arkadaştan istediğimde gerçekten takla attırmaya çalıştırlar bu işlem için. Fakat aslında yapmaları gereken koştuğu platformda ki yenilikleri öğrenmek olsaydı bu işi iki satırlık script ile halledebileceklerini biliyor olacaklardı.

 

Örneğimizde aşağıda ki gibi bir Temp Tablo oluşturalım ,

CREATE TABLE #Etut
(ID INT, Name VARCHAR(100), Lessons VARCHAR(100))
GO
INSERT INTO #Etut
SELECT 1, 'Yusuf', 'Fizik,Kimya,Mühendisliğe Giriş'
UNION ALL
SELECT 2, 'Yaşar', 'PLC,Ayrık Matematik'
UNION ALL
SELECT 3, 'Ozgur', 'Siyasal Bilimler,Edebiyat'
GO
SELECT *
FROM #Etut
GO

Tablomuza SELECT çektiğimizde aşağıda ki sonucu görmekteyiz.

Bizim amacımız Lessons kolonunda virgül ile ayrılan dersleri satır haline çevirmek. SQL Server 2016 da bu işlemi yapacak çok güzel bir fonksiyon geldi. STRING_SPLIT fonksiyonu ile önceden takla attırdığımız işlemi tek satırda hallediyoruz.

SELECT
    ID
   ,Name
   ,value
FROM #Etut
CROSS APPLY STRING_SPLIT(Lessons, ',')
GO

İşlem sonucunda da görüldüğü üzere STRING_SPLIT fonksiyonumuzu bu şekilde kullanarak ayrıştırma işlemlerimizi daha hızlı ve kolay bir şekilde gerçekleştirebiliriz.

Kolay Gelsin.

Leave a Reply

Your email address will not be published. Required fields are marked *