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

Откуда: Волжский
Сообщений: 235
Задача:
есть таблица:
1 ____ '5, 7, 9'
2 ____ '3, 8'

и таблица "Таб1":

3 ____ 0
4 ____ 0
5 ____ 0
6 ____ 0
7 ____ 0
8 ____ 0
9 ____ 0

необходимо проапдейтить Таб1 таким образом:

3 ____ 2
4 ____ 0
5 ____ 1
6 ____ 0
7 ____ 1
8 ____ 2
9 ____ 1

Как это можно сделать?
_____________________________________
Access 2003 adp, MS SQL server 2005
27 сен 09, 20:08    [7713056]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по парсингу строки  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33358
Блог
Arsave,

правила хороше тона предполагают предоставление скриптов на создание тестовых таблиц и наполнение их исходными данными
27 сен 09, 20:24    [7713084]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по парсингу строки  [new]
iljy
Member

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

много раз обсуждалась тема разбора строки чисел, поищите по форуму. Соответственно шаг 1 - превратить первую таблицу в такую:
1 - 5
1 - 7
1 - 9
2 - 3
2 - 8

шаг 2 думаю очевиден.
27 сен 09, 20:58    [7713152]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по парсингу строки  [new]
Ozzy-Osbourne
Member

Откуда: Balashikha
Сообщений: 139
Так, может ? (за производительность на больших таблицах не ручаюсь, ес-сно!)
if (select object_id('tempdb..#t1'))>0 drop table #t1
if (select object_id('tempdb..#t2'))>0 drop table #t2
create table #t1(id int, lst varchar(max))
create table #t2(id int, ref int default 0)
insert into #t1 select 1,'5,7,9' union all select 2,'3,8'

insert into #t2(id) 
select 3 union all select 4 union all select 5 union all 
select 6 union all select 7 union all select 8 union all select 9

update #t2 set ref=isnull( (select top 1 t1.id from #t1 t1 where charIndex(','+cast(#t2.id as varchar)+',', ','+t1.lst+',')>0 ), 0)
select * from #t2
result:
idref
32
40
51
60
71
82
91
27 сен 09, 21:02    [7713163]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по парсингу строки  [new]
Arsave
Member

Откуда: Волжский
Сообщений: 235
Ozzy-Osbourne, то что нужно, Спасибо большое!!
2 Критик, спасибо за замечание, исправлюсь))
2 ilij, мне кажется вариант Ozzy в моем случае предпочтительней, чем этот.
27 сен 09, 22:20    [7713297]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить