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

Откуда:
Сообщений: 8
Здравствуйте!
У нас в таблице есть поле типа Image, в котором хранится XML. До сего момента этот XML разбирался программно. Возникла задача получить значение Xml аттрибута внутри хранимой процедуры. Подскажите как, во-первых, преобразовать тип Image в Xml или строку, и во-вторых, получить значение аттрибута с помощью XPath. Очень нужно.
Заранее спасибо.
1 июл 09, 08:56    [7361670]     Ответить | Цитировать Сообщить модератору
 Re: type Image to type XML  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> Здравствуйте!
> У нас в таблице есть поле типа Image, в котором хранится XML. До сего
> момента этот XML разбирался программно. Возникла задача получить
> значение Xml аттрибута внутри хранимой процедуры. Подскажите как,
> во-первых, преобразовать тип Image в Xml или строку, и во-вторых,
> получить значение аттрибута с помощью XPath. Очень нужно.
> Заранее спасибо.

просто в виде текста хранится? так можно, тогда:
declare @t table (c image)
insert into @t values ('<e a="10"/>' )

select cast(cast(c as varbinary(max)) as xml).value('(/e/@a)[1]', 'int')
from @t

Posted via ActualForum NNTP Server 1.4

1 июл 09, 09:10    [7361691]     Ответить | Цитировать Сообщить модератору
 Re: type Image to type XML  [new]
Impact
Member

Откуда:
Сообщений: 8
спасибо, но выводит ошибку когда к XML приводит
XML parsing: line 1, character 477, illegal xml character
Забыл сказать, текст - UNICODE
Или не должно быть проблем?
1 июл 09, 09:55    [7361829]     Ответить | Цитировать Сообщить модератору
 Re: type Image to type XML  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> спасибо, но выводит ошибку когда к XML приводит
> XML parsing: line 1, character 477, illegal xml character
> Забыл сказать, текст - UNICODE
> Или не должно быть проблем?

если UTF-16 должно само преобразоваться.
если нет, можно явно кодировку указать попробовать:

cast(cast('<?xml version="1.0" encoding="utf-8"?>' as varbinary(max)) + cast(c as varbinary(max)) as xml)

Posted via ActualForum NNTP Server 1.4

1 июл 09, 10:25    [7361988]     Ответить | Цитировать Сообщить модератору
 Re: type Image to type XML  [new]
Impact
Member

Откуда:
Сообщений: 8
Спасибо большое.
1 июл 09, 11:42    [7362517]     Ответить | Цитировать Сообщить модератору
 Re: type Image to type XML  [new]
ТАРАКАН
Member

Откуда:
Сообщений: 439
для 2000 SQL как будет выглядить?
28 авг 09, 13:58    [7590778]     Ответить | Цитировать Сообщить модератору
 Re: type Image to type XML  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
ТАРАКАН
для 2000 SQL как будет выглядить?


В 2000 нет типа данных ХМL и его методов.
28 авг 09, 14:01    [7590791]     Ответить | Цитировать Сообщить модератору
 Re: type Image to type XML  [new]
ТАРАКАН
Member

Откуда:
Сообщений: 439
В таблице есть поле с типом Image.
данные хранятся в виде 0x902093472804752495804958
могу я как-то просмотреть что там в реальности хранится?
28 авг 09, 14:25    [7590970]     Ответить | Цитировать Сообщить модератору
 Re: type Image to type XML  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
ТАРАКАН
В таблице есть поле с типом Image.
данные хранятся в виде 0x902093472804752495804958
могу я как-то просмотреть что там в реальности хранится?


Для сервера - это просто набор байт. Его средствами Вы не узнаете, что там хранится.
28 авг 09, 14:27    [7590982]     Ответить | Цитировать Сообщить модератору
 Re: type Image to type XML  [new]
Glory
Member

Откуда:
Сообщений: 104760
ТАРАКАН
В таблице есть поле с типом Image.
данные хранятся в виде 0x902093472804752495804958
могу я как-то просмотреть что там в реальности хранится?

Там в реальности и хранится 0x902093472804752495804958. Просто каждый может вкладывать свой смысл в эту последовательность значений
28 авг 09, 14:36    [7591057]     Ответить | Цитировать Сообщить модератору
 Re: type Image to type XML  [new]
ТАРАКАН
Member

Откуда:
Сообщений: 439
pkarklin
ТАРАКАН
В таблице есть поле с типом Image.
данные хранятся в виде 0x902093472804752495804958
могу я как-то просмотреть что там в реальности хранится?


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


Вот ваш пример - https://www.sql.ru/forum/actualthread.aspx?bid=1&tid=453481&pg=1&hl=%f7%f2%e5%ed%e8%e5+image

DECLARE @Table TABLE(col1 image)

INSERT @Table VALUES('Это просто текст')

SELECT col1 FROM @Table

SELECT CAST(SUBSTRING(col1, 1, 8000) AS varchar(8000)) FROM @Table


Но у меня выходит не понятно что:
Y[k[ЩЮ/ҐaЪ<ґїа Bi)Ічэ"вы:“i&µ“B_М©uвЛRР%©SъЯJЙKзЎУЙ/Ѓ@К0(}˜>tYN$[‰ҐTЉ’бXИ>ZЮзЫ묵ѕuЩBиGЎџВы        
28 авг 09, 14:53    [7591175]     Ответить | Цитировать Сообщить модератору
 Re: type Image to type XML  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
мдя, но наверное только у вас :)
-------------------------------------
Jedem Das Seine
28 авг 09, 14:55    [7591192]     Ответить | Цитировать Сообщить модератору
 Re: type Image to type XML  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
ТАРАКАН
Но у меня выходит не понятно что:


Выходит где?!
28 авг 09, 15:01    [7591236]     Ответить | Цитировать Сообщить модератору
 Re: type Image to type XML  [new]
ТАРАКАН
Member

Откуда:
Сообщений: 439
pkarklin
ТАРАКАН
Но у меня выходит не понятно что:


Выходит где?!

select CAST(SUBSTRING(cs_SuspendedQ.ntxtTransportDict, 4,100) AS char(900))
from cs_SuspendedQ
Результат:
Y[k[ЩЮ/ҐaЪ<ґїа Bi)Ічэ"в ы:“i&µ“B_М©uвЛRР%©SъЯJЙKзЎУЙ/Ѓ@К0(}˜>tYN$[‰ҐTЉ’бXИ>ZЮзЫ묵ѕuЩBиGЎџВы
28 авг 09, 15:04    [7591260]     Ответить | Цитировать Сообщить модератору
 Re: type Image to type XML  [new]
Glory
Member

Откуда:
Сообщений: 104760
ТАРАКАН
pkarklin
ТАРАКАН
Но у меня выходит не понятно что:


Выходит где?!

select CAST(SUBSTRING(cs_SuspendedQ.ntxtTransportDict, 4,100) AS char(900))
from cs_SuspendedQ
Результат:
Y[k[ЩЮ/ҐaЪ<ґїа Bi)Ічэ"в ы:“i&µ“B_М©uвЛRР%©SъЯJЙKзЎУЙ/Ѓ@К0(}˜>tYN$[‰ҐTЉ’бXИ>ZЮзЫ묵ѕuЩBиGЎџВы


А причем тут тогда пример

DECLARE @Table TABLE(col1 image)
INSERT @Table VALUES('Это просто текст')
SELECT col1 FROM @Table
SELECT CAST(SUBSTRING(col1, 1, 8000) AS varchar(8000)) FROM @Table

??
28 авг 09, 15:05    [7591266]     Ответить | Цитировать Сообщить модератору
 Re: type Image to type XML  [new]
ТАРАКАН
Member

Откуда:
Сообщений: 439
Glory
ТАРАКАН
pkarklin
ТАРАКАН
Но у меня выходит не понятно что:


Выходит где?!

select CAST(SUBSTRING(cs_SuspendedQ.ntxtTransportDict, 4,100) AS char(900))
from cs_SuspendedQ
Результат:
Y[k[ЩЮ/ҐaЪ<ґїа Bi)Ічэ"в ы:“i&µ“B_М©uвЛRР%©SъЯJЙKзЎУЙ/Ѓ@К0(}˜>tYN$[‰ҐTЉ’бXИ>ZЮзЫ묵ѕuЩBиGЎџВы


А причем тут тогда пример

DECLARE @Table TABLE(col1 image)
INSERT @Table VALUES('Это просто текст')
SELECT col1 FROM @Table
SELECT CAST(SUBSTRING(col1, 1, 8000) AS varchar(8000)) FROM @Table

??

в примере разве не в поле типа Image вставляют данные, а после просматривают?
28 авг 09, 15:07    [7591278]     Ответить | Цитировать Сообщить модератору
 Re: type Image to type XML  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
ТАРАКАН,

Ниче не понял?! В моем примере я занес ('Это просто текст') и получил его. Бог его знает, что у Вас в поле cs_SuspendedQ.ntxtTransportDict?!
28 авг 09, 15:09    [7591288]     Ответить | Цитировать Сообщить модератору
 Re: type Image to type XML  [new]
ТАРАКАН
Member

Откуда:
Сообщений: 439
pkarklin
ТАРАКАН,

Ниче не понял?! В моем примере я занес ('Это просто текст') и получил его. Бог его знает, что у Вас в поле cs_SuspendedQ.ntxtTransportDict?!

ну вы занесли "Это просто текст" в поле типа Image, а в моем случае занесен XML документ.
28 авг 09, 15:10    [7591295]     Ответить | Цитировать Сообщить модератору
 Re: type Image to type XML  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
ТАРАКАН
ну вы занесли "Это просто текст" в поле типа Image, а в моем случае занесен XML документ.


Вы уверены?!

DECLARE @Table TABLE(col1 image)

INSERT @Table VALUES('<Root><Product ProductID="1"/></Root>')

SELECT CAST(SUBSTRING(col1, 1, 8000) AS varchar(8000)) FROM @Table

<Root><Product ProductID="1"/></Root>

(1 row(s) affected)
28 авг 09, 15:14    [7591320]     Ответить | Цитировать Сообщить модератору
 Re: type Image to type XML  [new]
Glory
Member

Откуда:
Сообщений: 104760
ТАРАКАН
pkarklin
ТАРАКАН,

Ниче не понял?! В моем примере я занес ('Это просто текст') и получил его. Бог его знает, что у Вас в поле cs_SuspendedQ.ntxtTransportDict?!

ну вы занесли "Это просто текст" в поле типа Image, а в моем случае занесен XML документ.

А что такое этот ваш "XML документ" ?
28 авг 09, 15:15    [7591321]     Ответить | Цитировать Сообщить модератору
 Re: type Image to type XML  [new]
ТАРАКАН
Member

Откуда:
Сообщений: 439
pkarklin
ТАРАКАН
ну вы занесли "Это просто текст" в поле типа Image, а в моем случае занесен XML документ.


Вы уверены?!

DECLARE @Table TABLE(col1 image)

INSERT @Table VALUES('<Root><Product ProductID="1"/></Root>')

SELECT CAST(SUBSTRING(col1, 1, 8000) AS varchar(8000)) FROM @Table

<Root><Product ProductID="1"/></Root>

(1 row(s) affected)

теперь не уверен.
а могут быть проблемы с кодировками или еще что?
28 авг 09, 15:20    [7591364]     Ответить | Цитировать Сообщить модератору
 Re: type Image to type XML  [new]
Glory
Member

Откуда:
Сообщений: 104760
ТАРАКАН

а могут быть проблемы с кодировками или еще что?

С чего вы вообще решили, что в этом поле информация хранится в том виде, в каком вы видите ее где-то в своей программе ?
28 авг 09, 15:22    [7591380]     Ответить | Цитировать Сообщить модератору
 Re: type Image to type XML  [new]
ТАРАКАН
Member

Откуда:
Сообщений: 439
все, получилось. всем спс.
28 авг 09, 15:57    [7591686]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить