Opérateurs XQuery sur le type de données xml
S’applique à :SQL Server
XQuery prend en charge les opérateurs suivants :
Opérateurs numériques (+, -, *, div, mod)
Opérateurs de comparaison de valeurs (eq, ne, lt, gt, le, ge)
Opérateurs pour la comparaison générale ( =, !=, <, >, <=, >= )
Pour plus d’informations sur ces opérateurs, consultez Expressions de comparaison (XQuery)
Exemples
R. Utilisation d'opérateurs généraux
La requête illustre l'utilisation d'opérateurs généraux qui s'appliquent à des séquences et qui comparent également des séquences. La requête récupère une séquence de numéros de téléphone pour chaque client à partir de la colonne AdditionalContactInfo de la table Contact . Cette séquence est ensuite comparée à la séquence de deux numéros de téléphone ("111-111-1111", "222-2222").
La requête utilise l’opérateur de = comparaison. Chaque nœud de la séquence située à droite de l’opérateur = est comparé à chaque nœud de la séquence sur le côté gauche. Si les nœuds correspondent, la comparaison de nœuds est TRUE. Elle est ensuite convertie en int et comparée à 1, puis la requête retourne l'ID de client.
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)
Il existe une autre façon d’observer le fonctionnement de la requête précédente : chaque valeur de numéro de téléphone récupérée à partir de la colonne AdditionalContactInfo est comparée à l’ensemble de deux numéros de téléphone. Si la valeur se trouve dans le jeu, le client correspondant est retourné dans le résultat.
B. Utilisation d'un opérateur numérique
L'opérateur + de cette requête est un opérateur de valeur, car il s'applique à un seul élément. Par exemple, la valeur 1 est ajoutée à une taille de lot retournée par la requête :
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. Utilisation d'un opérateur de valeur
La requête suivante récupère les éléments d’un <Picture
> modèle de produit dont la taille d’image est « petite » :
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
Étant donné que les opérandes de l’opérateur eq sont des valeurs atomiques, l’opérateur value est utilisé dans la requête. Vous pouvez écrire la même requête à l’aide de l’opérateur de comparaison général ( = ).
Voir aussi
Fonctions XQuery impliquant le type de données xml
Données XML (SQL Server)
Références relatives au langage Xquery (SQL Server)
Commentaires
https://aka.ms/ContentUserFeedback.
Prochainement : Tout au long de l'année 2024, nous supprimerons progressivement les GitHub Issues en tant que mécanisme de retour d'information pour le contenu et nous les remplacerons par un nouveau système de retour d'information. Pour plus d’informations, voir:Soumettre et afficher des commentaires pour