Bazen Sql’ de bir değeri kısım kısım ayırma gereği duyarız ne yazikki sql bu durumu tam olarak karşılayacak hazırda bir fonksiyona sahip değildir. Bu yüzden de oturup kendiniz yazmanız gerekir. bende en çok kullandığım ve geriye belirtilen sıradaki değeri döndüren sql fonksiyonunu sizlerle paylaşıyorum.
CREATE FUNCTION [dbo].[fString_Split]
(
-- Add the parameters for the function here
@orj_string NVARCHAR(MAX),
@count INT,
@split_char NVARCHAR(1)
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
-- Declare the return variable here
DECLARE @orj NVARCHAR(MAX)
-- Add the T-SQL statements to compute the return value here
DECLARE @dot_count INT
DECLARE @cikarilan NVARCHAR(MAX)
DECLARE @dongu INT
DECLARE @kalan NVARCHAR(MAX)
SET @dongu = 1
SET @orj = @orj_string
SET @cikarilan = @orj_string
SET @dot_count = (LEN(@orj_string) - LEN(REPLACE(@orj_string, @split_char, '')))
BEGIN
WHILE (@dongu <= @count)
BEGIN
BEGIN
IF ((LEN(@cikarilan) - LEN(REPLACE(@cikarilan, @split_char, ''))) > 0)
BEGIN
SET @kalan = @cikarilan
SET @cikarilan = SUBSTRING(@cikarilan, charindex(@split_char, @cikarilan) + 1, LEN(@cikarilan))
SET @kalan = SUBSTRING(@kalan, 0, charindex(@split_char, @kalan))
END
ELSE
BEGIN
IF (@count <= @dot_count + 1)
BEGIN
SET @kalan = @cikarilan
END
ELSE
SET @kalan = ''
END
END
SET @dongu = @dongu + 1
END
END
-- Return the result of the function
RETURN REPLACE(@kalan, @split_char, '')
END
Kullanımıda aşağıdaki şekildedir;
select dbo.fString_Split('Deee-ZZZZ-ffff-gggg-wwwww',1,'-')