XQuery является новым языком запросов для XML. Этот язык является гораздо более сложным, чем XPath. Фактически, XQuery содержит XPath в качестве своего подъязыка. Вы можете конвертировать данные столбцов XML в экземпляр типа данных XML с помощью опции for xml с директивой type и запрашивать их посредством XQuery. SQL Server поддерживает пять методов, которые могут быть использованы для запроса документов XML в XQuery:
♦ query принимает оператор XQuery в качестве ввода и возвращает экземпляр типа данных xml;
♦ exist принимает оператор XQuery в качестве ввода и возвращает 0, 1 или null в зависимости от результата запроса;
♦ value принимает оператор XQuery в качестве ввода и возвращает единственное скалярное значение;
♦ nodes полезен, когда вы хотите разделить тип данных xml на реляционные данные. Это позволяет идентифицировать узлы, которые будут размещены в новых строках;
♦ modify. В отличие от стандартизованной версии XQuery, которая в своей версии 1.0 не имеет спецификаций для операций изменения, SQL Server поддерживает добавление, модификацию и удаление документов XML при использовании метода modify о.
В следующих двух примерах показано использование двух методов XQuery. В примере 28.16 демонстрируется применение метода query.
Список select запроса в примере 28.16 содержит метод query с выражением XPath. (Заметьте, что методы XQuery в SQL Server применяются с использованием разделителя «точка».) Выражение '/PersonList/Titie' является абсолютным выражением, в котором отыскивается значение элемента Title. Помните, что выражения XPath являются допустимыми операторами XQuery, поскольку XPath является подъязыком XQuery.
Как вы уже знаете, метод exist принимает оператор XQuery в качестве ввода и возвращает 0, 1 или null в зависимости от результата запроса. Если результатом запроса является пустая последовательность, то возвращаемым значением будет 0. Последовательность, содержащая, по крайней мере, один элемент, возвращает 1, a null возвращается, если значение столбца есть null. В примере 28.17 показано использование метода exist ().
Список select в данном запросе содержит метод exist о с выражением XPath, которое проверяет, имеет ли атрибут value документа XML значение EmpioyeeList. Проверка дает в результате истину, поэтому возвращаемое значение запроса будет 1.