Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как разбить строку "AAA,BBB,CCCC" на набор данных  [new]
ЯЯЯЯЯЯЯЯЯЯЯЯЯ
Guest
Добрый день. Есть такая строка "AAA,BBB,CCCC" как ее разбить на набор данных, т.е. в виде таблице

Name
-----
AAA
BBB
CCC
8 авг 13, 09:37    [14679291]     Ответить | Цитировать Сообщить модератору
 Re: Как разбить строку "AAA,BBB,CCCC" на набор данных  [new]
aleks2
Guest
https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1032133&msg=14504017
8 авг 13, 09:44    [14679325]     Ответить | Цитировать Сообщить модератору
 Re: Как разбить строку "AAA,BBB,CCCC" на набор данных  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
declare @str varchar(100) = 'AAA,BBB,CCCC'

select
	substring(s.s, x.n + 1, CHARINDEX(',', s.s, x.n + 1) - x.n - 1)
from
	(select ROW_NUMBER() over (order by (select 1)) n from master.dbo.spt_values) x(n)
	, (select ',' + @str + ',' s) as s(s)
where
	substring(s.s, x.n, 1) = ','
	and x.n < len(s.s)
8 авг 13, 10:00    [14679401]     Ответить | Цитировать Сообщить модератору
 Re: Как разбить строку "AAA,BBB,CCCC" на набор данных  [new]
Алексей Куренков
Member [заблокирован]

Откуда: Москва
Сообщений: 567
ЯЯЯЯЯЯЯЯЯЯЯЯЯ,

declare @str varchar(500) = 'aaa,bbb,cccc'
-------- 1
declare @xml xml = '<a>'+replace(@str,',','</a><a>')+'</a>'

select a.value('.','varchar(20)') val
from @xml.nodes('/a') as t(a);

-------- 2
with cte (a, b) as
(
	select
		convert(varchar(500),left(@str,charindex(',',@str)-1)),
		stuff(@str+',',1,charindex(',',@str),'')
	union all
	select
		convert(varchar(500),left(b,charindex(',',b)-1)),
		stuff(b,1,charindex(',',b),'')
	from cte where b like '%,%'
)
select a
from cte
8 авг 13, 10:02    [14679414]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить