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

Откуда: Ивано-Франковск-Киев
Сообщений: 467
Есть таблица со столбцом Path:

Path
------
;0;1;2
;0;3;4;5;8
;7;9;

как из нее получить такую таблицу:

0
1
2
3
4
5
8
7
9
Тоесть, нужно все числа разделить и сделать из них отдельніе записи в новой табл.
Желательно без цикла по записям.

Спасибо.
18 мар 05, 22:48    [1399304]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать запрос  [new]
Зенит-чемпион
Guest
---Один из способов решения на оригинальность не претендую ---
create table #temp (Path varchar(100)) 
go
insert into #temp values(';0;1;2')
go
insert into #temp values(';0;3;4;5;8')
go
insert into #temp values(';7;9;')
go

declare 
@where_clause varchar(1000),
@sql varchar(1000)
select @where_clause=''
select @where_clause=@where_clause+Path from #temp

select @where_clause=replace(@where_clause,';',',')
select @where_clause=substring(@where_clause,2,len(@where_clause)-2) 
select @sql='select distinct number from master..spt_values where number in ('+@where_clause+') order by number'
exec (@sql)
19 мар 05, 00:12    [1399355]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать запрос  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
а вот ещё способ(на оригинальность так же не претендую )
declare @temp table(Path varchar(1000)) 
insert into @temp values(';0;1;2')
insert into @temp values(';0;3;4;5;8')
insert into @temp values(';7;9')
update @temp 
 set path='select '+replace(right(path,len(path)-1),';',' as n union select ')+' as n union '
declare @all varchar(8000)
set @all=''
select @all=@all+path from @temp
set @all=left(@all,len(@all)-6)
exec(@all)
19 мар 05, 11:10    [1399505]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить