Многозначные (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