Split işlemi programlama tarafında yapılabileceği gibi sql tarafında da yapılabilir. Veritabanından verileri çekip sonra split yapmak yerine veritabanından split edilmiş şekilde çekmek bazı durumlarda daha mantıklıdır. Paylaşılan Sql Split Fonksiyonu işinizi çok kolaylaştıracak bir Table-valued fonksiyondur.
Kullanımı oldukça basit; fonksiyon 2 string değer alıyor. İlki split edeceğiniz string ikinicisi ise neye göre split edeceğinizdir. Split edilen stringler tablo şeklinde bize geri dönüş sağlar.
|
1 |
SELECT * FROM dbo.Split('kodblogum.com','.') |

Sql Split Fonksiyonu
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[Split] ( @InputString VARCHAR(Max), @Delimiter VARCHAR(50) ) RETURNS @Items TABLE ( Item VARCHAR(Max) ) AS BEGIN IF @Delimiter = ' ' BEGIN SET @Delimiter = ',' SET @InputString = REPLACE(@InputString, ' ', @Delimiter) END IF (@Delimiter IS NULL OR @Delimiter = '') SET @Delimiter = ',' DECLARE @Item VARCHAR(Max) DECLARE @ItemList VARCHAR(Max) DECLARE @DelimIndex INT SET @ItemList = @InputString SET @DelimIndex = CHARINDEX(@Delimiter, @ItemList, 0) WHILE (@DelimIndex != 0) BEGIN SET @Item = SUBSTRING(@ItemList, 0, @DelimIndex) INSERT INTO @Items VALUES (@Item) SET @ItemList = SUBSTRING(@ItemList, @DelimIndex+1, LEN(@ItemList)-@DelimIndex) SET @DelimIndex = CHARINDEX(@Delimiter, @ItemList, 0) END IF @Item IS NOT NULL BEGIN SET @Item = @ItemList INSERT INTO @Items VALUES (@Item) END ELSE INSERT INTO @Items VALUES (@InputString) RETURN END |
