Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Преобразование строки в столбец  [new]
Дмитрий22
Member

Откуда:
Сообщений: 1
Доброго времени суток!
Есть строка со следующим содержимым - Вася,Петя,Коля,Миша
Необходимо получить из нее столбец следующего вида
Вася
Петя
Коля
Миша
Возможно ли сделать это?
MS SQL 2008
Заранее спасибо за ответы!
29 июл 17, 19:02    [20684931]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование строки в столбец  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36972
https://www.sql.ru/articles/mssql/03060701arraysandlistsinsqlserver.shtml
29 июл 17, 19:18    [20684944]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование строки в столбец  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
Функция, которая делит строку на слова
30 июл 17, 18:31    [20686057]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование строки в столбец  [new]
iii2
Member

Откуда:
Сообщений: 202
Ну и до кучи:

declare @c char(1000)
set @c = 'Маша,Коля,Вася,Петя,Глаша'
select x.value('(/a)[1]', 'varchar(50)') a1 ,
x.value('(/a)[2]', 'varchar(50)') a2,
x.value('(/a)[3]', 'varchar(50)') a3,
x.value('(/a)[4]', 'varchar(50)') a4,
x.value('(/a)[5]', 'varchar(50)') a5
from ( select cast( '<a>' + replace(@c, ',' , '</a><a>') + '</a>' as xml) x ) t

Тут не нужна функция.
Правда, если количество столбцов не фиксированное, запрос придется переписать.
30 июл 17, 21:27    [20686307]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование строки в столбец  [new]
iii2
Member

Откуда:
Сообщений: 202
Упс... пардон. один столбец.
Тогда там надо
Select
t2.n.value('(/a)[1]','varchar(50)') a
...
Cross apply x.nodes('a') t2(n)
30 июл 17, 21:37    [20686316]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить