Operatori di XQuery per il tipo di dati xml
Si applica a:SQL Server
XQuery supporta gli operatori seguenti:
Operatori numerici (+, -, *, div, mod)
Operatori di confronto per i valori (eq, ne, lt, gt, le, ge)
Operatori per il confronto generale ( =, !=, <, = >, <>= )
Per altre informazioni su questi operatori, vedere Espressioni di confronto (XQuery)
Esempi
R. Utilizzo degli operatori generali
La query seguente illustra l'utilizzo degli operatori generali validi per le sequenze e inoltre per le sequenze di confronto. La query recupera una sequenza di numeri di telefono per ogni cliente dalla colonna AdditionalContactInfo della tabella Contact . La sequenza viene quindi confrontata con la sequenza di due numeri di telefono ("111-111-1111", "222-2222").
La query usa l'operatore = di confronto. Ogni nodo nella sequenza sul lato destro dell'operatore = viene confrontato con ogni nodo nella sequenza a sinistra. Se i nodi corrispondono, il confronto dei nodi è TRUE. Viene quindi convertito in un tipo di dati int e confrontato con 1, quindi la query restituisce l'ID del cliente.
WITH XMLNAMESPACES (
'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ContactInfo' AS ACI,
'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ContactTypes' AS ACT)
SELECT ContactID
FROM Person.Contact
WHERE AdditionalContactInfo.value('
//ACI:AdditionalContactInfo//ACT:telephoneNumber/ACT:number =
("111-111-1111", "222-2222")',
'bit')= cast(1 as bit)
Esiste un altro modo per osservare il funzionamento della query precedente: ogni valore del numero di telefono recuperato dalla colonna AdditionalContactInfo viene confrontato con il set di due numeri di telefono. Se il numero è presente nel set, nel risultato viene restituito il cliente.
B. Utilizzo di un operatore numerico
L'operatore + nella query è un operatore per i valori, perché viene applicato a un singolo elemento. Ad esempio, il valore 1 viene aggiunto alle dimensioni di un lotto restituite dalla query:
SELECT ProductModelID, Instructions.query('
declare namespace
AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
for $i in (/AWMI:root/AWMI:Location)[1]
return
<Location LocationID="{ ($i/@LocationID) }"
LotSize = "{ number($i/@LotSize) }"
LotSize2 = "{ number($i/@LotSize) + 1 }"
LotSize3 = "{ number($i/@LotSize) + 2 }" >
</Location>
') as Result
FROM Production.ProductModel
where ProductModelID=7
C. Utilizzo di un operatore per valori
La query seguente recupera gli <Picture
> elementi per un modello di prodotto in cui le dimensioni dell'immagine sono "piccole":
SELECT CatalogDescription.query('
declare namespace PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
for $P in /PD:ProductDescription/PD:Picture[PD:Size eq "small"]
return
$P
') as Result
FROM Production.ProductModel
where ProductModelID=19
Poiché entrambi gli operandi dell'operatore eq sono valori atomici, l'operatore value viene usato nella query. È possibile scrivere la stessa query usando l'operatore di confronto generale ( = ).
Vedi anche
Funzioni XQuery per il tipo di dati XML
Dati XML (SQL Server)
Informazioni di riferimento sul linguaggio XQuery (SQL Server)
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per