Из предыдущих примеров уже должно быть понятно назначение этого метода. Его синтаксис:
value ('XQuery', SQLType [, noderef ]) |
- XQuery – запрос XQuery.
- SQLType – встроенный тип сервера.
- noderef – ссылка на узел, относительно которого выполняется запрос.
Использование этого метода удобно для выбора определенных скалярных значений документа. Не стоит его использовать только для фильтрации результирующего набора, как показано ниже:
select fams.* from fams where fam::value('/fam/husband/@income', 'int') > 180 |
В результате выбираются все семьи, мужья в которых имеют доход больше 180. Это менее эффективно, чем использование метода exist (особенно при наличии индекса), который я описываю далее:
select fams.* from fams where fam::exist('/fam/husband[@income > 180]') = 1 |
Метод exist
Метод exist возвращает значение типа bit, равное:
- 1, если результат выборки не является пустой последовательностью;
- 0, если результат является пустой последовательностью;
- NULL, если данный XML-документ пустой.
Вот синтаксис этого метода:
exist ('XQuery' [, noderef ]) |
Здесь:
- XQuery – запрос XQuery;
- noderef - ссылка на узел, относительно которого выполняется запрос.
Метод modify
Этот метод позволяет выполнять изменяющие XML-документ команды, речь о которых пойдет в разделе XML DML.