В прошлый раз я описал вариант “разворачивания” столбца в строку.
Иногда бывает необходимо совершенно противоположное действие – “разобрать” строку и представить ее в виде столбца.. Понятное дело, что всевозможных парсеров написано уже чуть более, чем совсем много, но в копилку на всякий случай положу вот такой способ – мне понравился..
Итак: Как развернуть строку в столбец?
Немного предыстории – в данном случае в качестве разделителя выступает запятая, ее я в скрипт и “зашил”. Понятное дело, можно скрипт усовершенствовать и предложить пользователю в начале определять, какой именно разделитель необходимо искать в строке, но, думаю, “губы накрасить” и красоту в скрипте навести при желании – невелика проблема, поэтому оставлю это на усмотрение других.
/* подготовительная работа - создаем таблицу и заполняем ее данными
create table t (id int, txt varchar(50))
insert into t values (1, 'afa,bddz,casd,cff,d10s,lm')
insert into t values (2, 'sfgdz,asdfz');
*/
with q as (
select id,
RIGHT(LEFT(T.txt,Number-1),CHARINDEX(',',REVERSE(LEFT(','+T.txt,Number-1)))) col2
from
master..spt_values,
t T
where Type = 'P' AND Number between 1 AND len(T.txt)+1 AND
(substring(T.txt,Number,1) in (',',''))
)
select id,
col2
from q
Есть мнение, что этот скрипт далеко не самый “прозрачный” и понятный.. Есть лучше варианты – предложите, запишу )