• Merhaba Ziyaretçi,
    Microsoft 365 Uygulamaları ile ilgili yeni haberler, dikkat çekici konular, ilgi ile takip edeceğiniz yazılar için.

    Abone Olun
  • ESTE - Microsoft Office Eğitimleri

    Yeni yıl Microsoft Office Eğitim planlarınız için bütçenizi oluşturmadan önce ESTE eğitim kalitesi ile tanışın. 🙌
    Kullanıcıların ihtiyacı olan yazılı materyal, dosya ve video kaynağı desteğimiz ile tüm ofis çalışanlarının iş süreçlerini rahatlatacak eğitimler planlayın. 🎯
    Microsoft Office eğitimlerimiz hakkında detaylı bilgi için bize ulaşın.

    👉 Microsoft Office Eğitim Talebi

Çözüldü Mssql STRING_SPLIT Fonksiyonu

Vedat ÖZER

Logo Uzmanı
Geliştirici
Katılım
4 Haz 2018
Mesajlar
288
En iyi yanıt
4
Puanları
63
Yaş
33
Konum
Antalya / Merkez
Ad Soyad
Vedat ÖZER
Office Vers.
2019
Merhaba,

STRING_SPLIT fonksiyonu Sql Server 2016 birlikte gelen bir fonksiyon. Sizin belirtmiş olduğunuz cümleyi belirtmiş olduğunuz parametreye göre satırlara dağıtır.

STRING_SPLIT ( string , separator )

Kullanım ;

SELECT * FROM string_split ('EXCEL TURKEY', ' ')

Sonuç ;
1 EXCEL
2 TURKEY

Sql Server 2016 versiyonu olmayan kişiler aşağıdaki sorguyu kullanabilir.

SQL:
DECLARE @String VARCHAR(100) = 'EXCEL TURKEY'
DECLARE @AYRAC VARCHAR(5) = ' '
SELECT T.C.value('.', 'VARCHAR(100)') AS VALUE
FROM (SELECT CAST('<C>' + REPLACE(@String,@AYRAC,'</C><C>') + '</C>' AS XML) AS X) AS A
CROSS APPLY X.nodes ('/C') AS T(C);

Ek olarak Ömer Faruk Çolakoğlu hocanın çözümü ;

SQL:
create FUNCTION [dbo].[SplitWithSeq](@String varchar(8000), @Delimiter char(1))    
returns @temptable TABLE (items varchar(8000), seq int)    
as    
begin    
    declare @i int
    set @i = 0
    declare @idx int    
    declare @slice varchar(8000)    
   
    select @idx = 1    
        if len(@String)<1 or @String is null  return    
   
    while @idx!= 0    
    begin    
        set @i = @i + 1
        set @idx = charindex(@Delimiter,@String)    
        if @idx!=0    
            set @slice = left(@String,@idx - 1)    
        else    
            set @slice = @String    
       
        if(len(@slice)>0)
            insert into @temptable(items,seq) values(@slice,@i)    

        set @String = right(@String,len(@String) - @idx)    
        if len(@String) = 0 break    
    end
return    
end
 
Üst Alt