Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения:SQL Server
Кванторы существования и кванторы всеобщности указывают различную семантику для логических операторов, применяемых к двум последовательностям. Это показано ниже.
Квантор существования
Если имеются две последовательности и любой элемент первой последовательности имеет соответствующую пару во второй последовательности согласно используемому оператору сравнения, возвращаемым значением будет True.
Универсальный квантификатор
Если имеются две последовательности и любой элемент первой последовательности имеет соответствующую пару во второй последовательности, возвращаемым значением будет True.
XQuery поддерживает выражения с квантором в следующем виде:
( some | every ) <variable> in <Expression> (,...) satisfies <Expression>
Можно использовать эти выражения в запросе для явного применения квантификации существования или всеобщности к выражению в отношении одной или нескольких последовательностей. В SQL Server выражение в satisfies предложении должно привести к одному из следующих значений: последовательности узлов, пустой последовательности или логического значения. Действительное логическое значение результата этого выражения будет использовано в квантификации. Экзистенциальное квантификация, использующая некоторые значения, возвращают значение True, если хотя бы одно из значений, привязанных квантификатором, имеет значение True в выражении удовлетворения. Универсальная квантификация, которая использует каждый из них, должна иметь значение True для всех значений, привязанных квантификатором.
Например, следующий запрос проверяет каждый <элемент Location> , чтобы узнать, имеет ли он атрибут LocationID.
SELECT Instructions.query('
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
if (every $WC in //AWMI:root/AWMI:Location
satisfies $WC/@LocationID)
then
<Result>All work centers have workcenterLocation ID</Result>
else
<Result>Not all work centers have workcenterLocation ID</Result>
') as Result
FROM Production.ProductModel
where ProductModelID=7
Так как LocationID является обязательным атрибутом <элемента Location> , вы получите ожидаемый результат:
<Result>All work centers have Location ID</Result>
Вместо использования метода query() можно использовать метод value() для возврата результата реляционному миру, как показано в следующем запросе. Запрос возвращает True, если все местоположения рабочих центров имеют атрибуты LocationID. В противном случае функция возвращает False.
SELECT Instructions.value('
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
every $WC in //AWMI:root/AWMI:Location
satisfies $WC/@LocationID',
'nvarchar(10)') as Result
FROM Production.ProductModel
where ProductModelID=7
В нижеследующем запросе проверяется, является ли одно из изображений продукции маленьким. В каталоге продукции в XML-формате хранятся разные ракурсы для каждого изображения продукта различного размера. Возможна необходимость, чтобы каждый каталог продукции в XML-формате содержал как минимум одно изображение маленького размера. Чтобы выполнить эту задачу, используется следующий запрос:
SELECT ProductModelID, CatalogDescription.value('
declare namespace PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
some $F in /PD:ProductDescription/PD:Picture
satisfies $F/PD:Size="small"', 'nvarchar(20)') as SmallPicturesStored
FROM Production.ProductModel
WHERE ProductModelID = 19
Частичный результат:
ProductModelID SmallPicturesStored
-------------- --------------------
19 true
Ограничения реализации
Существуют следующие ограничения:
- Утверждение типов не поддерживается как часть привязки переменной в выражениях с квантором.