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

Время чтения - 1 мин.Дата публикации 13.04.2021 (обновлено 21.05.2026)

Разбираем строки по частям: функция str_splitPart

Бывает, нужно вытащить из строки только кусочек. Не целиком, а до какого-то разделителя или после него. Для этого и пригодится наша функция.

Смотрите, как это работает:

-- Берём первую часть до запятой
select dbo.str_splitPart('111,222,333', ',', 1) 
-- Результат: 111

-- А так — всё, что после первой запятой
select dbo.str_splitPart('111,222,333', ',', 2) 
-- Результат: 222,333

-- Если разделителя нет — вернётся вся строка (для part=1)
select dbo.str_splitPart('просто строка', ',', 1)
-- Результат: просто строка

-- Или пустота (для part=2)
select dbo.str_splitPart('просто строка', ',', 2)
-- Результат: (пусто)

Параметр @part — это выбор: первая часть (1) или вторая (2). Всё просто.

Как это устроено внутри

Функция ищет позицию разделителя в строке. Если нашла — режет строку:

  • Для part=1 — берёт всё слева от разделителя.
  • Для part=2 — всё справа.

А если разделителя нет — возвращаем либо исходную строку (part=1), либо пустоту (part=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

Как запустить SQL сценарий сразу на нескольких БД

Индексы SQL Server. Поиск дубликатов

Запрос для получения SQL всех индексов для таблиц базы данных SQL Server

Как перестроить все индексы на базе SQL Server

Конвертация из строки в таблицу в SQL Server

Выполнение прямого запроса к URL из SQL

SQL Server Как установить у таблицы описание (MS Description)

Как получить текущего юзера БД

Как хранить в 1 поле таблицы БД значения разных типов?

Генерация MD5 в SQL Server

Как привести телефон в нормализованный вид

Как форматировать вывод числа с разделителями

Дополнительный заработок для разработчиков на T-SQL

Прямая работа с заказчиками как ИП или самозанятый. Нужно знать только SQL и HTML.
Falcon Space - платформа для создания сайтов с личными кабинетами
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Запрос расчета стоимости веб-проекта на базе Falcon Space
Если видео Youtube плохо грузится, то попробуйте найти видео в ВК видео на канале Falcon Space
Сайт использует Cookie, Яндекс Метрику. Используя сайт, вы соглашаетесь с правилами сайта. См. Правила конфиденциальности и Правила использования сайта OK