Сложный запрос для Transact SQL? - PullRequest
0 голосов
/ 26 сентября 2018

Мне интересно, как бы вы сделали это в Transact SQL:

Предположим, у вас есть строка значений в базе данных, разделенных запятой, например:

"1,2,3,4,5"

В TransactSQL, какой синтаксис вы бы использовали:

  1. Читать строку
  2. Вставить каждое целое число в отдельную строку в базе данных.

ДляНапример, после выполнения этого оператора Transact SQL в базе данных будет пять дополнительных строк:

1
2
3
4
5

Это просто?

Спасибо

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018
DECLARE @tags NVARCHAR(400) = '1,2,3,4,5,7', @idx int  

while LEN(@tags) > 1  
begin  
    select @idx=CHARINDEX(',',@tags);  
    select SUBSTRING(@tags,1,@idx-1);  
    set @tags = SUBSTRING(@tags,@idx+1,LEN(@tags)+1)  
end  
select SUBSTRING(@tags,1,@idx-1);  
0 голосов
/ 26 сентября 2018

Для этой цели вы можете использовать функцию STRING_SPLIT

https://docs.microsoft.com/en-us/sql/t-sql/functions/string-split-transact-sql?view=sql-server-2017

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...