Ilościowy wyrażeń (XQuery)
Kwantyfikatory existential i uniwersalnych określić różne semantyka dla 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 dowolny element w pierwszej kolejności dopasowanie sekwencji drugi operator porównania, który jest używany w oparciu zwrócona wartość jest True.Kwantyfikator uniwersalny
Jeśli każdy element w pierwszej kolejności odpowiedników w drugiej kolejności, biorąc pod uwagę dwie sekwencje, zwrócona wartość jest True.
XQuery obsługuje określone ilościowo wyrażeń w następującej formie:
( some | every ) <variable> in <Expression> (,…) satisfies <Expression>
wyrażenie te kwerendy umożliwia jawnie dotyczą kwantyfikacji existential lub uniwersalnych wyrażenie jednego lub kilku sekwencji.W SQL Server, wyrażenie w satisfies klauzula musi skutkować jedną z następujących: sekwencja węzłów sekwencji pusta lub wartość logiczna.Skuteczne wartość logiczna wynikiem tego wyrażenie będzie używany w kwantyfikacji.Kwantyfikacja existential, który używa some zwróci wartość True, jeśli co najmniej jedna z wartości związani kwantyfikator wynik PRAWDA satisfy wyrażenie.Universal kwantyfikacji, który używa every musi mieć wartość True dla wszystkich wartości związani kwantyfikator.
Na przykład następujące kwerendy kontroli co <lokalizację> element, aby zobaczyć, czy ma 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ż wymaganego atrybut LocationID <lokalizację> element, pojawi się oczekiwany wynik:
<Result>All work centers have Location ID</Result>
Zamiast query() metoda, można użyć metoda value() zwraca wynik relacyjnej świata, jak pokazano w następującej kwerendzie.Kwerenda zwraca wartość PRAWDA, jeśli wszystkie lokalizacje Centrum pracy atrybutów LocationID.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ąca kwerenda sprawdza, jeśli jeden z obrazów produktu jest mała.W katalogu produktów XML różne kąty są przechowywane dla każdego obrazu produktu różnej wielkości.Można zapewnić, że każdy katalog produktów XML zawiera co najmniej jeden obraz małe.Następująca kwerenda rozwiązanie 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
Ograniczenia wdrażania
Są następujące ograniczenia:
- Typ potwierdzenia nie jest obsługiwany jako część powiązanie zmiennej w wyrażeniach ilościowo.