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

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

Использование: 

select Value, num from dbo.split('111,222,333,444', ',') 

Сама функция:

ALTER FUNCTION [dbo].[split] ( @stringToSplit NVARCHAR(MAX), @char NVarCHAR)
-- updated 20-09-2020

RETURNS
 @returnList TABLE ([value] [nvarchar] (max), num int)
AS
BEGIN

Declare  @r1 TABLE ([value] [nvarchar] (max), num int)

 DECLARE @name NVARCHAR(max)
 DECLARE @pos INT
 declare  @index int = 1

 WHILE CHARINDEX(@char, @stringToSplit) > 0
 BEGIN
  SELECT @pos  = CHARINDEX(@char, @stringToSplit)  
  SELECT @name = SUBSTRING(@stringToSplit, 1, @pos-1)

  INSERT INTO @r1 
  SELECT @name, @index

  set @index = @index  + 1

  SELECT @stringToSplit = SUBSTRING(@stringToSplit, @pos+1, LEN(@stringToSplit)-@pos)
 END

 INSERT INTO @r1
 SELECT @stringToSplit, @index


 insert into @returnList 
 select [Value], num from  @r1 order by num

 RETURN
END
Насколько полезной была статья?

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

SQL. Как работать с датами в SQL Server

SQL Server. Как переносить на новую строку в строковой переменной в SQL

SQL. Вывод разметки HTML в сыром виде (в виде тегов) в SQL

SQL. Как привести дату в строку в нужный формат в SQL Server

SQL. Как использовать select from Хранимка

SQL. Как прописью написать число в SQL

SQL. Как массово залить данные в таблицу БД через CSV (Excel)

SQL. Как перенести сложный тип данных на другую базу

SQL. Как перевести дату JS в дату SQL

SQL. Как выводить окончание у множественного числа (5 заказОВ, 3 заказА)

Настройка полнотекстового поиска fulltext search в SQL Server

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

Разработчик SQL, нужны клиенты и заказы?

Прямые заказы от клиентов. Нужно знать только SQL и HTML
Работа на MS SQL Server

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

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