2012-06-17 5 views
2

В моей таблице содержится 2 столбца, один из которых - Id типа int, а другой тип Xml.Использование XQuery в SQL Server

В Xml колонке, у меня есть данные этой структуры

<Fields> 
    <Field name='aa' value='000'/> 
    <Field name='bb' value='111'/> 
    <Field name='cc' value='222'/> 
</Fields> 

Теперь с помощью XQuery, я хочу, чтобы запросить таблицу, чтобы получить все строки, в которых поле тег с атрибутом имени является aa и значение атрибута 111, И полем с именем является атрибут bb, а атрибут value - 222.

Другими словами, я хочу указать пару имя/значение и получить строки, в которых соответствуют данные xml.

Спасибо!

+0

Для этого вам необходимо использовать [Методы типов данных xml] (http://msdn.microsoft.com/en-us/library/ms190798 .aspx). Попробуйте и задайте новый вопрос, когда у вас возникнут проблемы. –

+0

Посмотрите это - http://stackoverflow.com/q/7064207/763026 –

ответ

1

Вы могли бы использовать что-то вроде этого (так как вы не упомянули ваши имена таблиц или столбцов, я просто использовал что-то на моей - адаптировать их как нужно!):

SELECT 
    (list of columns) 
FROM 
    dbo.YourTableNameHere 
WHERE 
    XmlContent.exist('/Fields/Field[@name = "aa"][@value = "000"') = 1 

Это возвращает все строки из таблицы, в которой XML содержит узел <Field> с атрибутами name = "aa" и value = "000"

+0

Спасибо! Но я хочу вернуться не только для пары значений имени. То есть, я хочу, где имя aa и значение 000 И имя bb, а значение - 222. Спасибо за ваш ответ promt –

+0

Спасибо! Но я хочу вернуться не только для пары значений имени. То есть, я хочу, чтобы все строки, где существует узел поля с именем имени атрибута, являются «aa», а значение «000» AND и другим полем с именем атрибута «bb» и значением «222». Спасибо за ваше приглашение –

+0

@otubuOlukayode: в этом случае просто добавьте 'AND XmlContent.exist ('/ Fields/Field [@name =" bb "] [@ value =" 222 "') = 1'' WHERE' предложение этого запроса, который я опубликовал –

Смежные вопросы