Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A következőkre vonatkozik:SQL Server
Az egzisztenciális és univerzális kvantitátorok különböző szemantikát határoznak meg a logikai operátorok számára, amelyek két sorozatra vannak alkalmazva. Ez az alábbi táblázatban látható.
Egzisztenciális számszerűsítő
Két sorozat esetén, ha az első sorozat bármely eleme megegyezik a második sorozatban a használt összehasonlító operátor alapján, a visszaadott érték Igaz.
univerzális kvantálási
Két sorozat esetén, ha az első sorozat minden eleme megegyezik a második sorozatban, a visszaadott érték Igaz.
Az XQuery a következő formában támogatja a számszerűsített kifejezéseket:
( some | every ) <variable> in <Expression> (,...) satisfies <Expression>
Ezekkel a kifejezésekkel egy lekérdezésben explicit módon alkalmazhat egzisztenciális vagy univerzális kvantálást egy kifejezésre egy vagy több szekvencián keresztül. Az SQL Serverben a satisfies záradék kifejezésének a következők egyikét kell eredményeznie: csomópontütemezést, üres sorozatot vagy logikai értéket. A kvantálás során a kifejezés eredményének tényleges logikai értékét fogja használni. Az egyes használó egzisztenciális kvantálás igaz értéket ad vissza, ha a kvantáló által kötött értékek közül legalább egy igaz eredményt ad a megfelelő kifejezésben. Az összes használó univerzális kvantálásnak igaznak kell lennie a kvantáló által kötött összes értékre.
Az alábbi lekérdezés például minden <Hely> elemet ellenőrzi, hogy rendelkezik-e LocationID attribútummal.
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
Mivel a LocationID a <Hely> elem kötelező attribútuma, a várt eredményt kapja:
<Result>All work centers have Location ID</Result>
A query() metódushasználata helyett a érték() metódus használatával visszaadhatja az eredményt a relációs világba, ahogyan az az alábbi lekérdezésben is látható. A lekérdezés igaz értéket ad vissza, ha az összes műhelyhely locationID attribútummal rendelkezik. Ellenkező esetben a lekérdezés hamis értéket ad vissza.
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
Az alábbi lekérdezés ellenőrzi, hogy az egyik termékkép kicsi-e. A termékkatalógus XML-fájljában különböző szögek vannak tárolva minden különböző méretű termékképhez. Érdemes lehet meggyőződni arról, hogy minden termékkatalógus XML-fájlja tartalmaz legalább egy kis méretű képet. A következő lekérdezés ezt hajtja végre:
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
Ez egy részleges eredmény:
ProductModelID SmallPicturesStored
-------------- --------------------
19 true
Megvalósítási korlátozások
Ezek a korlátozások:
- A típusérvényesítés nem támogatott a változó kvantált kifejezésekben való kötésének részeként.