Многозначные (ARRAY) сравнения в синтаксисе SQL поиска SharePoint
Дата последнего изменения: 21 апреля 2010 г.
Применимо к: SharePoint Server 2010
В этой статье Кванторы не указаны Квантор ALL Квантор SOME (или ANY) Примеры
Сравнивает хранящиеся в контенте столбцы с несколькими значениями (многозначные столбцы).
Примечания
Если ссылка на столбец указывает не на многозначный столбец, SharePoint Server возвращает ошибку. Тип данных столбца должен быть совместим с типом элементов в списке сравнения. При необходимости можно привести ссылку на столбец к другому типу данных.
В предложении WHERE можно использовать любые стандартные операторы сравнения. При многозначном сравнении операторы сравнения имеют немного иной смысл, зависящий от используемых кванторов. По этой причине функции операторов сравнения описаны ниже в специальных таблицах кванторов.
Список сравнения представляет собой массив значений literal, которые сравниваются с многозначным столбцом. Синтаксис списка сравнения приведен ниже.
При использовании синтаксиса списка сравнения следует быть внимательным. Группу литералов literals, образующих список сравнения, следует заключить в квадратные скобки. Отдельные элементы списка сравнения заключать в квадратные скобки не следует. Например, ARRAY [1,2,3] — правильный синтаксис, а ARRAY [1[,2][,3]] — нет.
Метод, позволяющий определить возвращаемое значение многозначного сравнения (TRUE или FALSE), указывается в необязательном кванторе. В последующих разделах описаны все кванторы и механизм работы каждого оператора сравнения при использовании соответствующего квантора.
Кванторы не указаны
Если кванторы не указаны, каждый элемент в левой части сравнения сравнивается с элементом, находящимся в той же позиции в правой части сравнения. Сравнение начинается с первых и продолжается до последних элементов массивов. Если все элементы в левой части эквивалентны соответствующим элементам в правой части, тогда большим массивом считается тот, в котором больше элементов.
В приведенной ниже таблице кратко описаны механизмы работы операторов сравнения при отсутствии кванторов.
Оператор "равно" возвращает значение TRUE, если каждый элемент в левой части имеет то же значение, что и соответствующий элемент в правой части, а количество элементов в обоих массивах одинаково.
Оператор "не равно" возвращает значение TRUE, если один или несколько элементов в левой части имеют значения, отличные от значений соответствующих элементов в правой части, либо количество элементов в левом и правом массивах не совпадает.
Оператор "больше" возвращает значение TRUE, если значение каждого элемента в левой части больше значения соответствующего элемента в правой части. Если все значения элементов в левой части в точности соответствуют элементам в правой части, а в массиве в правой части есть элементы, не соответствующие элементам в левой части, оператор "больше" возвращает значение TRUE.
Оператор "больше или равно" возвращает значение TRUE, если значение каждого элемента в левой части больше или равно значению соответствующего элемента в правой части.
Оператор "меньше" возвращает значение TRUE, если значение каждого элемента в левой части меньше значения соответствующего элемента в правой части. Оператор "меньше" также возвращает значение TRUE, если в левой части меньше элементов, чем в правой.
Оператор "меньше или равно" возвращает значение TRUE, если значение каждого элемента в левой части меньше или равно значению соответствующего элемента в правой части.
Квантор ALL
Квантор ALL указывает, что каждый элемент в левой части сравнивается с каждым элементом в правой части. Для возврата значения TRUE условие сравнения должно быть выполнено для всех элементов в левой части при сравнении с каждым элементом в правой части. Количество элементов в правом и левом массивах на результат не влияет.
В следующей таблице показано, как ведет себя каждый оператор сравнения с квантификатором ALL.
Оператор "равно" возвращает значение TRUE, если каждый элемент в левой части имеет то же значение, что и каждый элемент в правой части.
Оператор "не равно" возвращает значение TRUE, если один или несколько элементов в левой части имеют значение, отличное от значения любого из элементов в правой части.
Оператор "больше" возвращает значение TRUE, если каждый элемент в левой части больше каждого элемента в правой части.
Оператор "больше или равно" возвращает значение TRUE, если каждый элемент в левой части больше или равен каждому элементу в правой части.
Оператор "меньше" возвращает значение TRUE, если каждый элемент в левой части меньше каждого элемента в правой части.
Квантор SOME (или ANY)
Кванторы SOME и ANY взаимозаменяемы. Квантор SOME указывает, что каждый элемент в левой части сравнивается с каждым элементом в правой части. Для возврата значения TRUE условие сравнения должно быть выполнено хотя бы для одного элемента в левой части при сравнении с каждым элементом в правой части. Количество элементов в правом и левом массивах на результат не влияет.
В следующей таблице показано, как ведет себя каждый оператор сравнения с квантификатором SOME.
Оператор "равно" возвращает значение TRUE, если по крайней мере один из элементов в левой части имеет то же значение, что и любой из элементов в правой части.
Оператор "не равно" возвращает значение TRUE, если ни один из элементов в левой части не равен ни одному из элементов в правой части.
Оператор "больше" возвращает значение TRUE, если по крайней мере один из элементов в левой части больше любого из элементов в правой части.
Оператор "больше или равно" возвращает значение TRUE, если по крайней мере один из элементов в левой части больше или равен любому из элементов в правой части.
Оператор "меньше" возвращает значение TRUE, если по крайней мере один из элементов в левой части меньше любого из элементов в правой части.
Примеры
Все приведенные ниже сравнения возвращают значение TRUE. Помните, что при реальном использовании синтаксис поискового запроса требует, чтобы в левой части находилось свойство, а не значение literal.