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.
Bientôt disponible : pendant toute l’année 2024, nous allons éliminer progressivement Problèmes GitHub comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, voir :Soumettre et afficher des commentaires pour