SQL Server : Cara Membagi (Split) Teks String Berdasarkan Koma

Pada SQL Server tahun 2016 atau yang lebih baru terdapat fungsi STRING_SPLIT, yang dapat digunakan untuk membagi atau memisahkan teks berdasarkan karakter pemisah tertentu. Misalnta text string dengan pemisah koma seperti query berikut ini:

SELECT * 
FROM STRING_SPLIT('Indonesia,Singapore,Vietnam',',')



Atau teks yang dipisah dengan tanda pagar seperti berikut:


Tapi untuk SQL Server versi sebelum 2016 mungkin belum bisa menggunakan STRING_SPLIT, karena itu kita bisa membuat function sendiri dengan menggunakan looping.

CREATE FUNCTION [dbo].StringSplit
(
    @String  VARCHAR(MAX), @Separator CHAR(1)
)
RETURNS @RESULT TABLE(Value VARCHAR(MAX))
AS
BEGIN     
 DECLARE @SeparatorPosition INT = CHARINDEX(@Separator, @String ),
        @Value VARCHAR(MAX), @StartPosition INT = 1
 
 IF @SeparatorPosition = 0  
  BEGIN
   INSERT INTO @RESULT VALUES(@String)
   RETURN
  END
     
 SET @String = @String + @Separator
 WHILE @SeparatorPosition > 0
  BEGIN
   SET @Value = SUBSTRING(@String , @StartPosition, @SeparatorPosition- @StartPosition)
 
   IF( @Value <> ''  ) 
    INSERT INTO @RESULT VALUES(@Value)
   
   SET @StartPosition = @SeparatorPosition + 1
   SET @SeparatorPosition = CHARINDEX(@Separator, @String , @StartPosition)
  END    
     
 RETURN
END

Execute SQL diatas untuk membuat fungsi di database kita. Kemudian berikut ini contoh query untuk menggunakannya:

SELECT * FROM
 StringSplit('Indonesia,Singapore,Vietnam',',')
SELECT * FROM
 StringSplit('Indonesia#Singapore#Vietnam','#')





Post a Comment

0 Comments