Wyrażenia ilościowych (XQuery)
Kwantyfikatory existential i uniwersalnych określić inną semantyka operatorów logicznych, które są stosowane do dwóch sekwencji.Jest ona wyświetlana w następującej tabela.
Kwantyfikator existential
Biorąc pod uwagę dwie sekwencje, jeśli dowolnego element w pierwszej kolejności ma odpowiednika w drugiej kolejności, oparte na operator porównania, który jest używany, zwrócona wartość jest TRUE.Kwantyfikator uniwersalny
Jeśli każdy element w pierwszej kolejności ma odpowiednika w drugiej kolejności, biorąc pod uwagę dwie sekwencje, zwrócona wartość jest TRUE.
XQuery obsługuje ilościowych wyrażeń w następującej postaci:
( some | every ) <variable> in <Expression> (,…) satisfies <Expression>
Za pomocą tych wyrażeń w kwerendzie można jawnie dotyczą ilościowego existential albo uniwersalną wyrażenie sekwencji jednego lub kilku.W SQL Server, wyrażenie w satisfies Klauzula zawiera się w jednej z następujących czynności: sekwencja węzłów, sekwencję pusta lub logiczny. Skuteczne wartość typu logiczny wynikiem tego wyrażenie będzie używany w ilościowego.Existential ilościowego, który używa some zwróci wartość true, jeśli co najmniej jedną z wartości związana kwantyfikator ma wartość PRAWDA, wynik w wyrażeniu satisfy. Uniwersalny ilościowego używający every musi mieć wartość true dla wszystkich wartości związana kwantyfikator.
Na przykład następujące kwerendy kontroli co <Lokalizacja> element, aby sprawdzić, czy ma ona atrybut 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
Ponieważ LocationID wymaganego atrybut <Lokalizacja> element, pojawi się oczekiwany wynik:
<Result>All work centers have Location ID</Result>
Zamiast używać Metoda Query(), można użyć Metoda Value() , aby powrócić do świata relacyjnej wynik, jak pokazano w następującej kwerendzie.Kwerenda zwraca wartość true, jeśli atrybuty LocationID wszystkie lokalizacje gniazda roboczego.W przeciwnym razie kwerenda zwraca wartość 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
Następujące kwerendy sprawdza, jeśli jeden z obrazów produktu jest mała.W katalogu produktów XML różnych kąty są przechowywane dla każdego produktu obrazu o różnych rozmiarach.Należy upewnić się, że każdy katalog produktów XML zawiera co najmniej jeden obraz małe.Następująca kwerenda wykonująca to:
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
Jest to wynik częściowy:
ProductModelID SmallPicturesStored
-------------- --------------------
19 true
defaultButton
Ograniczenia są następujące:
- Typ potwierdzenia nie jest obsługiwane w ramach wiązanie zmiennej w wyrażeniach ilościowych.