У меня есть таблица документов с:Как я могу запросить значение в столбце ТЕКСТА SQL Server, который содержит XML (не XML тип столбца)
DOCUMENTS
____________________
DOCUMENTID int
USERID int
CONTENT text
я следующий XML, хранящимся в столбце TEXT с именем СОДЕРЖАНИЯ в SQL Сервер базы данных
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<IDMSDocument>
<DocumentContent>
<Attribute Name="Number" GUID="{FFFFFFFF-0000-0000-0000-000000000001}">
<IDMSType>3060</IDMSType>
<Value Type="Integer">
<Value>122</Value>
</Value>
</Attribute>
<Attribute Name="Date" GUID="{FFFFFFFF-0000-0000-0000-000000000002}">
<IDMSType>3061</IDMSType>
<Value Type="DateTime">
<Date>10-09-2014</Date>
</Value>
</Attribute>
<Attribute Name="Публикуване" GUID="{CA646F55-5229-4FC5-AA27-494B25023F4E}">
<IDMSType>3062</IDMSType>
<Value Type="String">
<Value>Да</Value>
</Value>
</Attribute>
<Attribute Name="Дата" GUID="{AC0465B0-4FB4-49E2-B4FA-70901068FD9B}">
<IDMSType>3063</IDMSType>
<Value Type="DateTime">
<Date>01-10-2014</Date>
</Value>
</Attribute>
<Attribute Name="Предмет на поръчка" GUID="{04A4EC72-6F33-461F-98DD-D8D271997788}">
<IDMSType>3065</IDMSType>
<Value Type="String">
<Value>Избор на консултанти</Value>
</Value>
</Attribute>
</DocumentContent>
</IDMSDocument>
я найти способ, как запросить DINGLE атрибут XML в одной строке из таблицы, с тяжелой конверсии:
DECLARE @strContent NVARCHAR(MAX);
DECLARE @xmlContent XML;
SET @strContent = (select content from DOCUMENTS where DocumentID=24);
SET @xmlContent = CAST(REPLACE(CAST(@strContent AS NVARCHAR(MAX)),'utf-8','utf-16') AS XML)
SELECT @xmlContent.query('/IDMSDocument/DocumentContent/Attribute[5]/Value/Value')
where @xmlContent.value('(/IDMSDocument/DocumentContent/Attribute[5]/Value/Value)[1]', 'nvarchar(max)') like '%search%'
Мне нужно сделать запрос как «выбрать все строки в таблице, которые в пятом атрибуте в XML имеют значение« поиск »
Для меня общая проблема заключается в том, что тип столбца не является XML, но у меня есть текстовый столбец с сохраненным xml внутри. когда я пытаюсь выполнить, запрос, значение напрямую возвращает сервер, который я могу использовать. Только с столбцом XML.
Я был бы очень признателен, если кто-то предложит, как это сделать!
Спасибо!
Камне
Типы данных 'ntext',' text' и 'image' будут удалены в будущей версии SQL Server. Избегайте использования этих типов данных в новых разработках и планируйте изменять приложения, которые в настоящее время их используют. Вместо этого используйте 'nvarchar (max)', 'varchar (max)' и 'varbinary (max)'. [См. Подробности здесь] (http://msdn.microsoft.com/en-us/library/ms187993.aspx) - вы должны ** преобразовать ** свой столбец в 'XML', а затем использовать его –