SQLSql ServerT-SQL

Sql Server STRING_SPLIT Fonksiyonu Ne işe Yarar ?

Sql Server’da STRING_SPLIT fonksiyonu nedir ? Bu fonksiyon ne işe yarar , SPLIT parçalanmış,bölünmüş anlamına gelmektedir. Sql Serverda da bu işi yapmaktadır, verilen bir string ifadeyi içerisindeki belirli karakterlere göre parçalayıp satır satır geriye döndürülmesini sağlar.  Javascript ile karşılaştırmak gerekir ise orada split fonksiyonu veriyi parçalayıp geriyi bir dizi döndürüyor ancak Sqlde dizi kavramı olmadığı için verileri geriye satır satır dönüş sağlamaktadır. Kullanımında ise 2 parametre verilir, birincisi parçalanacak ifade ikincisi ise hangi karakterlerden parçalanacağıdır.

‘Sql,Server,Split,Nedir’ ifadesi  ;

SELECT value FROM STRING_SPLIT(‘Sql,Server,Split,Nedir’, ‘ ,’);

şeklinde kullanıldığı zaman geriye dönen sonuç aşağıdaki gibi olacaktır.

  • Sql
  • Server
  • Split
  • Nedir

Burada önemli bir nokta ise bu fonksiyon tüm uyumluluk seviyeleriyle çalışmamasıdır, eğer veritabanı uyumluluk seviyesi 130’un altında ise bu fonksiyon çalışmayacaktır, uyumluluk seviyesini veritabanını sağ tıklayıp özellikleri bölümünden görebilirsiniz, Eğer yüklü olduğu Sql Server destekliyor ise 130 ve üstüne çekebilirsiniz.

Bu işlemi yapmak istemiyorsanız, veritabanı ayarları konusunda söz sahibi değilseniz doğal olarak bu tür ayarlamaları siz yapmak istemeyeceksiniz. Bu durumda ise benzer görev gören bir fonksiyonuda aşağıya bırakıyorum, bu fonksiyonu ilgili veritabanında çalıştırarak STRING_SPLIT ifadesiyle aynı görevi görmüş olacaktır.

CREATE FUNCTION dbo.splitstring ( @stringToSplit VARCHAR(MAX),@sign varchar(12) )
RETURNS
@returnList TABLE ([Name] [nvarchar] (500))
AS
BEGIN
DECLARE @name NVARCHAR(255)
DECLARE @pos INT
WHILE CHARINDEX(@sign, @stringToSplit) > 0
BEGIN
SELECT @pos = CHARINDEX(@sign, @stringToSplit)
SELECT @name = SUBSTRING(@stringToSplit, 1, @pos-1)
INSERT INTO @returnList
SELECT @name
SELECT @stringToSplit = SUBSTRING(@stringToSplit, @pos+1, LEN(@stringToSplit)-@pos)
END
INSERT INTO @returnList
SELECT @stringToSplit
RETURN
END

Kullanımı ise şu şekildedir : SELECT * FROM dbo.splitstring(‘Sql,Server,Split,Nedir’ , ‘,’)

Paylaş

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir