Как разрезать строку на части в SQL по некоторому символу

Функция позволяет извлечь часть строки из другой строки по разделителю. 

Пример использования: 

select dbo.str_splitPart('111,222,333', ',', 1) -- 111
select dbo.str_splitPart('111,222,333', ',', 2) -- 222,333

@part - либо 1, либо 2

ALTER function [dbo].[str_splitPart] (
	@value nvarchar(max), 
	@divider nvarchar(12) = ',',
	@part int = 2	
	) 
returns nvarchar(max) as
begin

declare @res nvarchar(max) = ''

if(CHARINDEX(@divider,@value)>0) begin
	if(@part=1) begin
		set @res = LEFT(@value,CHARINDEX(@divider,@value)-1)
	end else
	begin 
		set @res = RIGHT(@value,LEN(@value) - CHARINDEX(@divider,@value) -(LEN(@divider)-1))
	end
end else begin
	if(@part=1) begin
		set @res = @value
	end else
	begin 
		set @res = ''
	end
end

return @res
end
Насколько полезной была статья?

Что еще посмотреть по SQL Server

Выгода от использования Falcon Space

В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Нужна бесплатная консультация?
Планируете делать веб-проект?
Сайт использует Cookie. Правила конфиденциальности OK