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

Откуда:
Сообщений: 54
Доброго времени суток.
Есть вроде бы простая задачка, но никак не могу придумать как сделать проще.
Есть набор чисел через запятую. В наборе тысячи разных цифирок, надо их перевернуть в столбик.
Если упрощенно, то
SELECT 100,150,170

SELECT 100
UNION
SELECT 150
UNION
SELECT 170

Тысячи юнионов писать не реально, тем более набор постоянно меняется.
Подскажите куда копать )) Спасибо.
26 сен 14, 09:52    [16624129]     Ответить | Цитировать Сообщить модератору
 Re: Переворот строки в столбец  [new]
Glory
Member

Откуда:
Сообщений: 104751
Gizmor
Есть набор чисел через запятую.

Что за тип данных такой - "набор" ?

Gizmor
Тысячи юнионов писать не реально, тем более набор постоянно меняется.
Подскажите куда копать ))

Парсинг
26 сен 14, 09:58    [16624168]     Ответить | Цитировать Сообщить модератору
 Re: Переворот строки в столбец  [new]
Gizmor
Member

Откуда:
Сообщений: 54
Glory,

Ну набор конечно не корректное название.
Числа, перечисленные через запятую постоянно разные (и по количеству и по значению)
26 сен 14, 10:00    [16624188]     Ответить | Цитировать Сообщить модератору
 Re: Переворот строки в столбец  [new]
Glory
Member

Откуда:
Сообщений: 104751
Gizmor
Числа, перечисленные через запятую

У вас в голове перечисленные ? Или здесь на форуме в этой теме ?
26 сен 14, 10:02    [16624200]     Ответить | Цитировать Сообщить модератору
 Re: Переворот строки в столбец  [new]
Gizmor
Member

Откуда:
Сообщений: 54
Glory,

ну я для примера дал
SELECT 100,150,170

Вот это есть та строка, значения которой нужно преобразовать в столбец.
Простите если написал непонятно
26 сен 14, 10:16    [16624299]     Ответить | Цитировать Сообщить модератору
 Re: Переворот строки в столбец  [new]
Glory
Member

Откуда:
Сообщений: 104751
Gizmor
Вот это есть та строка, значения которой нужно преобразовать в столбец.

Это не строка.
Это запрос. Который неизвестно как появляется на сервере.
26 сен 14, 10:18    [16624318]     Ответить | Цитировать Сообщить модератору
 Re: Переворот строки в столбец  [new]
_Groxot_
Member

Откуда: Оттуда
Сообщений: 481
Gizmor,

while откусывающий до запятой и пишущий во временную таблицу?
26 сен 14, 10:23    [16624344]     Ответить | Цитировать Сообщить модератору
 Re: Переворот строки в столбец  [new]
_Groxot_
Member

Откуда: Оттуда
Сообщений: 481
Gizmor,

а вообще вот там уже есть ответ https://www.sql.ru/forum/1117618/rasparsit-stroku-v-tablicu
26 сен 14, 10:26    [16624357]     Ответить | Цитировать Сообщить модератору
 Re: Переворот строки в столбец  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1887
declare @str varchar(max)
set @str = '1,2,3,50,90'
set @str = 'select ' + REPLACE(@str,',',' as Num union all select ') + ' as Num'
exec(@str)
26 сен 14, 11:03    [16624604]     Ответить | Цитировать Сообщить модератору
 Re: Переворот строки в столбец  [new]
Gizmor
Member

Откуда:
Сообщений: 54
LexusR,

спасибо большущее!!! Не додумкал бы в жизнь. Уважуха к форуму безпредельная.
26 сен 14, 11:12    [16624662]     Ответить | Цитировать Сообщить модератору
 Re: Переворот строки в столбец  [new]
Glory
Member

Откуда:
Сообщений: 104751
Gizmor
Не додумкал бы в жизнь

А вы поняли разницу между
SELECT 100,150,170
и
declare @str varchar(max)
set @str = '1,2,3,50,90'

?
26 сен 14, 11:25    [16624757]     Ответить | Цитировать Сообщить модератору
 Re: Переворот строки в столбец  [new]
Gizmor
Member

Откуда:
Сообщений: 54
Glory,

да понятно. В первом случае это разные столбцы, в другом случае это значение одного столбца.
26 сен 14, 11:27    [16624767]     Ответить | Цитировать Сообщить модератору
 Re: Переворот строки в столбец  [new]
Glory
Member

Откуда:
Сообщений: 104751
Gizmor
Glory,

да понятно. В первом случае это разные столбцы, в другом случае это значение одного столбца.

Ну-да, ну-да. А еще я в неё ем.
26 сен 14, 11:34    [16624812]     Ответить | Цитировать Сообщить модератору
 Re: Переворот строки в столбец  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
Gizmor,

5 копеек в качестве альтернативы exec

 declare @str varchar(max), @xml xml
 set @str ='1,2,3,4,5,6,7,8,9,0'
 set @xml = convert(xml, '<row>' + replace(@str, ',', '</row><row>') + '</row>')

 select 
    rw.query('.').value('(/row)[1]', 'int') 
 From
    @xml.nodes('/row') as t(rw)
26 сен 14, 12:00    [16625014]     Ответить | Цитировать Сообщить модератору
 Re: Переворот строки в столбец  [new]
Glory
Member

Откуда:
Сообщений: 104751
WarAnt
5 копеек в качестве альтернативы exec

Давайте не будем в 100500ю тему о парсинге снова постить 100500 вариантов парсинга.
26 сен 14, 12:04    [16625032]     Ответить | Цитировать Сообщить модератору
 Re: Переворот строки в столбец  [new]
o-o
Guest
Glory
Gizmor
Glory,

да понятно. В первом случае это разные столбцы, в другом случае это значение одного столбца.

Ну-да, ну-да. А еще я в неё ем.


да ТС свой SELECT 100,150,170 ни разу не выполнял,
это же он так форуму представил исходные данные типа "строка".
а вы своим вопросом провели ему в голове аналогию с select col1, col2, col3 from...
вот какие разрушительные побочные эффекты на неокрепшие умы вызывают вопросы Glory
он все равно никогда не запустит тот свой SELECT, а вы еще и виноватым останетесь :)
26 сен 14, 12:17    [16625129]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить