SQL Server 2016 STRING_SPLIT

SQL Server 2016 STRING_SPLIT

 

SQL Server 2016 yeniliklerinden bahsederken özellikle String_Split fonksiyonu için tek bir makaleyi yapmayı uygun gördüm. Veri tabanı yöneticilerinin sıklıkla karşılaştığı virgülle ayrılmış dosyaları içe aktarma veya belirli sütunlarda bulunan virgülle ayrılmış verileri süzme, ekleme, aktarma işlemleri DBA lerin fazlaca zamanını almaktadır. Hatta DBA’lerin değil yazılım uzmanlarının da belirli noktalarda ciddi zamanlarını almaktadır.

SQL Server 2016 için uzun zamandır feedbacklerde bulunan ve ürün grubu tarafından geliştirilen String_Split duyuruldu ve basitçe iki adet parametre alacak şekilde tasarlandı

STRING_SPLIT ( string , separator )

String_Split bir tablonun tek bir sütünunun döndürür ve döndürülen sütünün adı istenilen değer olarak dönmektedir. Dönüş değernin öntanımla veri tipi varchar dır. Verilen dizi yani giriş değerine göre de dönüş veri tipi değişmektedir. Eğer siz veri olarak nvarchar veya nchar olarak bir giriş değeri verdi iseniz bu size nvarchar olarak çıktı verecektir. Dönen değer uzunluğu ise giriş dizesi uzunluğu ile aynı olacaktır.

String Split Veritabanı uyumluluğu

Öncelikle STRING_SPLIT fonksiyonunu kullanmak için veri tabanı uyumluluk düzeyinizin 130 olması gerekmektedir .

STS – 1

Yukarıdaki sorguyu çalıştırdığınızda eğer SQL Server 2016 aşağısında bir sürümde iseniz aşağıdaki gibi bir hata alacaksınız.

STS – 2

Bu durumda eğer SQL Server yükseltme işlemi yaparsanız otomatik olarak String_Split fonksiyonu kullanılabilir durumda olacaktır. Veri tabanı uyumluluk düzeyi için aşağıdaki gibi bir sorgu yazarak veri tabanımızı 130 uyumluluk değerine çekebiliriz.

STS – 3

Ardından hemen önce çalıştırdığımız string_split fonksiyonunu tekrar çalıştırabiliriz.

STS – 4

 

STRING_SPLIT Where ve Order By Kullanımı

String_Split fonksiyonu diğer Transact fonksiyonlar gibi Where ve Order By yan cümleleri ile filtrelenebilir ve sorgulanabilir. Örnek olarak Sıralama için aşağıdaki komutu çalıştırabilirsiniz.

STS -5

STS – 6

 

STRING_SPLIT Parametre olarak kullanımı

Daha önceden belirttiğimiz gibi, seperatör tek karakter olarak ayırıcı fonksiyon tarafından kullanılan bir özelliktir.

STS – 7

Bu yüzden yukarıdaki gibi bir sorgu çalıştırdığınızda bize her zaman için ncarh(1),varchar(1), nvarchar(1) veri türlerinin tek bir karakteri olduğunu söyler.

Bunun yerine her zaman tek karakter olarak tanımlarsanız tanımlı parametre olarak da separatör değeri ile String_Split fonksiyonunu sorunsuz olarak kullanabilirsiniz.

STS – 8

STRING_SPLIT Unicode karakter Kullanımı

Nchar veya Nvarchar olarak tanımladığınız verilerde unicode karakterler içinde sorgu yapabilir ve ayrıştırabilirsiniz

STS – 9

NULL Değeri ile STRING_SPLIT Kullanımı

String_split fonksiyonunda seperatör değeri null olarak kullanılamaz. Eğer herhangi bir şekilde null olarak tanımlama yaparsanız aşağıdaki gibi bir sonuç ile karşılaşırsınız.

STS – 10

Bunun tam tersi olarak değerleriniz null olursa hata almadan çalışmaya devam edebilirsiniz tabi doğal olarak verileriniz boş gelecektir.

STS – 11

NULL seçeneğine bir diğer alternatif senaryo ise eğer veri dizenizden herhangi bir öğe yok yada boş ise çıktı sonucunda onu yeni bir row olarak göreceksiniz. Bunun null değer check etme işlemini manuel olarak yada transact içinde cursor vasıtası ile yapabilirsiniz.

STS – 12

 

Sonuç olarak String_Split fonksiyonunu herhangi bir user defined fonksiyon olarak SQL Server 2016 veri tabanızı dosyaıza eklemeniz halinde (örnek olarak ) ;

.

STS – 13

Veri tabanlarınızda bir den fazla yerde ayrıştırma işlemi yapıyorsanız sizlerin daha kolay kullanımı ve daha hızlı bir şekilde verilerinizi düzenleme kabiliyeti kazanmanıza olanak verir.

Sizlerde fonksiyonlarınızı yeni gelen özellikler ile veri tabanlarınıza eklemeniz halinde kullanımı kolay bir yönetim elde edeceksiniz.