Общие операторы сравнения

Общие операторы сравнения (general comparision operators) больше всего напоминают операторы сравнения XPath 1.0. Различие заключается в том, что новые операторы работают с последовательностями элементов.

К общим операторам сравнения относятся <, >, <=, >=, = и!=.

Когда общий оператор применяется к двум последовательностям элементов, результатом является истина в том случае, если хотя бы один элемент в первой последовательности удовлетворяет соответствующему условию, примененному к любому элементу второй последовательности. Фактически, это то же самое правило, которое действовало в XPath 1.0, когда операндами оператора сравнения были наборы узлов. Что означает данное правило на практике? Данный оператор сравнения берет поочередно каждый элемент первой последовательности и применяет соответствующий атомарный оператор сравнения к каждому элементу из второй последовательности. Как видно, это довольно медленная операция. Ее трудоемкость достаточно велика – O(n*m), где n – размер первой последовательности и m – размер второй. Правда, процессор вовсе не обязан просматривать все элементы обоих последовательностей – он может завершить работу сразу же, как только для какой-либо пары оператор сравнения вернет истинное значение.

Несколько примеров:

declare @xml xmlset @xml = '<a>1</a><a>2</a>'select @xml::query('{--false – нет ни одного элемента из первой последовательности, меньшего, чем любой элемент из второй последовательноси--}(10, 20, 30) < (1, 2), {--true - первый элемент первой последовательности меньше последнегоэлемента второй последовательности--}(10, 20, 30) < (1, 20), {--true - последний элемент первой последовательности равен единственному элементу второй последовательности--}(1, 2, 3) = (3), {--true - последний элемент первой последовательности равен единственному элементу второй последовательности/a - возвращает последовательность из двух элементов--}/a = 2')

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: