Nyckelord i Azure Cosmos DB för NoSQL
GÄLLER FÖR: NoSQL
Azure Cosmos DB för NoSQL:s frågespråk innehåller en uppsättning reserverade nyckelord som används i frågor för utökade funktioner.
BETWEEN
Nyckelordet BETWEEN
utvärderas till ett booleskt värde som anger om målvärdet ligger mellan två angivna värden, inklusive.
Du kan använda nyckelordet BETWEEN
med en WHERE
sats för att uttrycka frågor som filtrerar resultat mot strängintervall eller numeriska värden. Följande fråga returnerar till exempel alla objekt där priset är mellan 17.25
och 25.50
, återigen inkluderande.
SELECT VALUE
p.price
FROM
products p
WHERE
p.price BETWEEN 17.25 AND 25.50
[
20
]
Du kan också använda nyckelordet BETWEEN
SELECT
i -satsen, som i följande exempel.
SELECT
(p.price BETWEEN 0 AND 10) AS booleanLessThanTen,
p.price
FROM
products p
[
{
"booleanLessThanTen": false,
"price": 20.0
},
{
"booleanLessThanTen": true,
"price": 7.5
}
]
Kommentar
I API:et för NoSQL, till skillnad från ANSI SQL, kan du uttrycka intervallfrågor mot egenskaper av blandade typer. Kan till exempel price
vara ett tal som 5.0
i vissa objekt och en sträng som fifteenDollars
i andra. I dessa fall, som det är i JavaScript, resulterar jämförelsen mellan de två olika typerna i undefined
, så objektet hoppas över.
TYDLIG
Nyckelordet DISTINCT
eliminerar dubbletter i det projicerade frågeresultatet.
I det här exemplet projekterar frågan värden för varje produktkategori. Om två kategorier är likvärdiga returnerar endast en enskild förekomst i resultatet.
SELECT DISTINCT VALUE
p.category
FROM
products p
[
"Accessories",
"Tools"
]
Du kan också projicera värden även om målfältet inte finns. I det här fallet finns fältet inte i något av objekten, så frågan returnerar ett tomt objekt för det specifika unika värdet.
SELECT DISTINCT
p.category
FROM
products p
Resultatet är:
[
{},
{
"category": "Accessories"
},
{
"category": "Tools"
}
]
Tycka om
Returnerar ett booleskt värde beroende på om en specifik teckensträng matchar ett angivet mönster. Ett mönster kan innehålla vanliga tecken och jokertecken.
Dricks
Du kan skriva logiskt likvärdiga frågor med hjälp av antingen nyckelordet LIKE
eller RegexMatch
systemfunktionen. Du ser samma indexanvändning oavsett vilket alternativ du väljer. Valet av vilket alternativ som ska användas baseras till stor del på syntaxinställningar.
Kommentar
Eftersom LIKE
kan använda ett index bör du skapa ett intervallindex för egenskaper som du jämför med .LIKE
Du kan använda följande jokertecken med LIKE:
beskrivning | Exempel | |
---|---|---|
% |
Valfri sträng med noll eller fler tecken. | WHERE c.description LIKE "%SO%PS%" |
_ (understreck) |
Alla enskilda tecken. | WHERE c.description LIKE"%SO_PS%" |
[ ] |
Ett enskilt tecken inom det angivna intervallet ([a-f] ) eller uppsättningen ([abcdef] ). |
WHERE c.description LIKE "%SO[t-z]PS%" |
[^] |
Ett enskilt tecken ligger inte inom det angivna intervallet ([^a-f] ) eller uppsättningen ([^abcdef] ). |
WHERE c.description LIKE "%SO[^abc]PS%" |
Tecknet %
matchar valfri sträng med noll eller fler tecken. Genom att till exempel placera en %
i början och slutet av mönstret returnerar följande fråga alla objekt där det angivna fältet innehåller frasen som en delsträng:
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "%driver%"
Om du bara använde ett %
tecken i slutet av mönstret skulle du bara returnera objekt med en beskrivning som började med fruit
:
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "%glove"
På samma sätt anger jokertecknet i början av mönstret att du vill matcha värden med det angivna värdet som ett prefix:
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "Road%"
Nyckelordet NOT
inverterar resultatet av LIKE
nyckelordets uttrycksutvärdering. Det här exemplet returnerar alla objekt som inte matchar LIKE
uttrycket.
SELECT VALUE
p.name
FROM
products p
WHERE
p.name NOT LIKE "%winter%"
Du kan söka efter mönster som innehåller ett eller flera jokertecken med hjälp av ESCAPE
-satsen. Om du till exempel vill söka efter beskrivningar som innehåller strängen 20%
vill du inte tolka det %
som ett jokertecken. Det här exemplet tolkar ^
som escape-tecknet så att du kan undkomma en specifik instans av %
.
SELECT VALUE
p.name
FROM
products p
WHERE
p.description LIKE "%20^%%" ESCAPE "^"
Du kan omsluta jokertecken inom hakparenteser för att behandla dem som literaltecken. När du omger ett jokertecken inom hakparenteser tar du bort eventuella särskilda attribut. Den här tabellen innehåller exempel på literaltecken.
Parsat värde | |
---|---|
LIKE "20-30[%]" |
20-30% |
LIKE "[_]n" |
_n |
LIKE "[ [ ]" |
[ |
LIKE "]" |
] |
IN
Använd nyckelordet IN
för att kontrollera om ett angivet värde matchar något värde i en lista. Följande fråga returnerar till exempel alla objekt där kategorin matchar minst ett av värdena i en lista.
SELECT
*
FROM
products p
WHERE
p.category IN ("Accessories", "Clothing")
Dricks
Om du inkluderar partitionsnyckeln IN
i filtret filtreras frågan automatiskt till endast relevanta partitioner.
TOPP
Nyckelordet TOP
returnerar det första N
antalet frågeresultat i en odefinierad ordning. Vi rekommenderar att du använder TOP
med ORDER BY
-satsen för att begränsa resultatet till det första N
antalet ordnade värden. Att kombinera dessa två satser är det enda sättet att förutsäga vilka rader TOP
som påverkar.
Du kan använda TOP
med ett konstant värde, som i följande exempel, eller med ett variabelvärde med hjälp av parametriserade frågor.
SELECT TOP 10
*
FROM
products p
ORDER BY
p.price ASC