Как разрезать строку на части в SQL по некоторому символу
Разбираем строки по частям: функция 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 поле таблицы БД значения разных типов?
Дополнительный заработок для разработчиков на T-SQL
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта