Partage via


Valeur booléenne effective (XQuery)

S’applique à :SQL Server

Voici les valeurs booléennes effectives :

  • False si l'opérande est une séquence vide ou une valeur booléenne fausse.

  • Sinon, la valeur est true.

La valeur booléenne effective peut être calculée pour les expressions qui renvoient une seule valeur booléenne, une séquence de nœuds ou une séquence vide. Notez que la valeur booléenne est calculée de manière implicite lors du traitement des types d'expressions suivants :

Voici un exemple de valeur booléenne effective. Lorsque l’expression if est traitée, la valeur booléenne effective de la condition est déterminée. Puisque l'expression /a[1] renvoie une séquence vide, la valeur booléenne effective est false. Le résultat est renvoyé au format XML avec un nœud de texte (false).

value is false  
DECLARE @x XML  
SET @x = '<b/>'  
SELECT @x.query('if (/a[1]) then "true" else "false"')  
go  

Dans l'exemple suivant, la valeur booléenne effective est true puisque l'expression renvoie une séquence non vide.

DECLARE @x XML  
SET @x = '<a/>'  
SELECT @x.query('if (/a[1]) then "true" else "false"')  
go  

Lorsque vous interrogez des colonnes ou des variables xml typées, vous pouvez avoir des nœuds de type booléen. Dans ce cas, data() retourne une valeur booléenne. Si l'expression de la requête renvoie une valeur booléenne true, la valeur booléenne effective est true, comme le montre l'exemple qui suit. Les points suivants sont également illustrés dans l'exemple suivant :

  • Une collection de schémas XML est créée. L’élément <b> de la collection est de type booléen.

  • Une variable xml typée est créée et interrogée.

  • L'expression data(/b[1]) renvoie une valeur booléenne true. Par conséquent, la valeur booléenne effective est true dans ce cas.

  • L’expression data(/b[2]) retourne une valeur booléenne false. Par conséquent, la valeur booléenne effective est false dans ce cas.

CREATE XML SCHEMA COLLECTION SC AS '  
<schema xmlns="http://www.w3.org/2001/XMLSchema">  
      <element name="s" type="string"/>  
      <element name="b" type="boolean"/>  
</schema>'  
go  
DECLARE @x XML(SC)  
SET @x = '<b>true</b><b>false</b>'  
SELECT @x.query('if (data(/b[1])) then "true" else "false"')  
SELECT @x.query('if (data(/b[2])) then "true" else "false"')  
go  

Voir aussi

Concepts de base de XQuery
Instruction et itération FLWOR (XQuery)