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

Откуда:
Сообщений: 405
Всем привет! Гуру сиквела, подскажите реально ли преобразовать такую вот строку: ||ItemTitle||Loaded Potato Skins||ItemDescr||We hollow five jumbo potatoes & stuff them w/ real cheddar cheese, smoked bacon & chives, served w/ sour cream.||Item||\r\n||PriceDescrс**аPrice||6.99||ItemTitle||Cookie Skillet||ItemDescr||A large baked to order chocolate chip cookie in a cast iron skillet topped w/ ice cream, whipped cream & chocolate syrup.||Item||\r\n||PriceDescrс**аPrice||8.99|| в следующую таблицу:

К сообщению приложен файл. Размер - 42Kb
13 сен 13, 16:08    [14837564]     Ответить | Цитировать Сообщить модератору
 Re: как преобразовать строку в таблицу  [new]
Гость333
Member

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

Сама таблица уже готова, нужно только загрузить в неё данные?
Или нужно сначала создать таблицу?
13 сен 13, 16:24    [14837622]     Ответить | Цитировать Сообщить модератору
 Re: как преобразовать строку в таблицу  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Уточнение — Или нужно сначала создать таблицу со структурой, заданной в строке?
13 сен 13, 16:25    [14837630]     Ответить | Цитировать Сообщить модератору
 Re: как преобразовать строку в таблицу  [new]
Гость333
Member

Откуда:
Сообщений: 3683
temoxa
||PriceDescrс**аPrice||8.99||

А почему все значения разделяются || , а PriceDescr и Price — каким-то с**а ?
13 сен 13, 16:28    [14837641]     Ответить | Цитировать Сообщить модератору
 Re: как преобразовать строку в таблицу  [new]
temoxa
Member

Откуда:
Сообщений: 405
Гость333, ||ItemTitle||Loaded Potato Skins||ItemDescr||We hollow five jumbo potatoes & stuff them w/ real cheddar cheese, smoked bacon & chives, served w/ sour cream.||Item||\r\n||PriceDescrс**аPrice||6.99||ItemTitle||Cookie Skillet||ItemDescr||A large baked to order chocolate chip cookie in a cast iron skillet topped w/ ice cream, whipped cream & chocolate syrup.||Item||\r\n||PriceDescrс**аPrice||8.99||

Таблица уже есть, а вот по поводу дилиметра - ну вот так выгрузили файл...
13 сен 13, 16:41    [14837718]     Ответить | Цитировать Сообщить модератору
 Re: как преобразовать строку в таблицу  [new]
temoxa
Member

Откуда:
Сообщений: 405
Гость333, это что редактор чата вставляет...
13 сен 13, 16:42    [14837727]     Ответить | Цитировать Сообщить модератору
 Re: как преобразовать строку в таблицу  [new]
temoxa
Member

Откуда:
Сообщений: 405
Гость333, там вот что ||||...
13 сен 13, 16:44    [14837739]     Ответить | Цитировать Сообщить модератору
 Re: как преобразовать строку в таблицу  [new]
irrona
Member

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

При помощи CLR-функции - запросто.
15 сен 13, 22:24    [14842160]     Ответить | Цитировать Сообщить модератору
 Re: как преобразовать строку в таблицу  [new]
qwerty112
Guest
irrona
temoxa,

При помощи CLR-функции - запросто.

а функция что делать будет ? парсить по разделителям ? ... так это и на ТСКЛ несложно сделать, только что с этими "распарсенными" "кусками" делать ... что из них имя поля, а что данные и из какой строки ?

---
declare @txt varchar(max)
declare @xml xml

set @txt='||ItemTitle||Loaded Potato Skins||ItemDescr||We hollow five jumbo potatoes & stuff them w/ real cheddar cheese, smoked bacon & chives, served w/ sour cream.||Item||\r\n||PriceDescr|| ||Price||6.99||ItemTitle||Cookie Skillet||ItemDescr||A large baked to order chocolate chip cookie in a cast iron skillet topped w/ ice cream, whipped cream & chocolate syrup.||Item||\r\n||PriceDescr|| ||Price||8.99||'
set @txt=right(@txt, len(@txt)-2)
set @txt=replace(@txt, '&', '&')

set @txt=replace(@txt, 'ItemTitle', '/><row ItemTitle')
set @txt=right(@txt, len(@txt)-2)
--print @txt

;with cte as (
select stuff(@txt, charindex('||', @txt, 1), 2, '="') as txt, 1 as num

union all

select 
	case num % 2
		when 0 then stuff(txt, charindex('||', txt, 1), 2, '="') 
		when 1 then stuff(txt, charindex('||', txt, 1), 2, '" ') 
	end,
	num+1
from cte
where charindex('||', txt, 1)>0
)

select top 1 @xml = cast(txt+'/>' as xml) 
from cte order by num desc

--select @xml

select 
	 t.c.value('@ItemTitle', 'varchar(20)') as ItemTitle
	,t.c.value('@ItemDescr', 'varchar(150)') as ItemDescr
	,t.c.value('@Item', 'varchar(10)') as Item
	,t.c.value('@PriceDescr', 'varchar(10)') as PriceDescr
	,t.c.value('@Price', 'money') as Price
from @xml.nodes('/row') as t(c)

ItemTitle            ItemDescr                                                                                                                                              Item       PriceDescr Price
-------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------ ---------- ---------- ---------------------
Loaded Potato Skins  We hollow five jumbo potatoes & stuff them w/ real cheddar cheese, smoked bacon & chives, served w/ sour cream.                                        \r\n                  6,99
Cookie Skillet       A large baked to order chocolate chip cookie in a cast iron skillet topped w/ ice cream, whipped cream & chocolate syrup.                              \r\n                  8,99

(2 row(s) affected)
16 сен 13, 00:35    [14842332]     Ответить | Цитировать Сообщить модератору
 Re: как преобразовать строку в таблицу  [new]
qwerty112
Guest
форум подправил:
это
set @txt=replace(@txt, '&', '&')

читать так
set @txt=replace(@txt, '&', '&_amp;')

без подчеркивания
16 сен 13, 00:41    [14842337]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить