Поделиться через


Многозначные (ARRAY) сравнения в синтаксисе SQL поиска SharePoint

Дата последнего изменения: 21 апреля 2010 г.

Применимо к: SharePoint Server 2010

В этой статье
Кванторы не указаны
Квантор ALL
Квантор SOME (или ANY)
Примеры

Сравнивает хранящиеся в контенте столбцы с несколькими значениями (многозначные столбцы).

…WHERE <column> <comp_op> [<quantifier>] <comparison_list>

Примечания

Если ссылка на столбец указывает не на многозначный столбец, SharePoint Server возвращает ошибку. Тип данных столбца должен быть совместим с типом элементов в списке сравнения. При необходимости можно привести ссылку на столбец к другому типу данных.

В предложении WHERE можно использовать любые стандартные операторы сравнения. При многозначном сравнении операторы сравнения имеют немного иной смысл, зависящий от используемых кванторов. По этой причине функции операторов сравнения описаны ниже в специальных таблицах кванторов.

Список сравнения представляет собой массив значений literal, которые сравниваются с многозначным столбцом. Синтаксис списка сравнения приведен ниже.

ARRAY [<literal>,<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.

ARRAY [1,2] > ARRAY [1,1]
ARRAY [1,2] > ARRAY [1,1,2]
ARRAY [1,2] < ARRAY [1,2,3]
ARRAY [1,2] = SOME ARRAY [1,12,27,35,2]
ARRAY [1,1] != ALL ARRAY [1,2]
ARRAY [1,20,21,22] < SOME ARRAY [0,40]
ARRAY [1,20,21,22] < ANY ARRAY [0,40]

См. также

Ссылка

Неполнотекстовые предикаты в SQL-синтаксисе поиска SharePoint

Сравнение литералов в синтаксисе SQL поиска SharePoint