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 :
Expressions logiques
Clause WHERE d'une expression FLWOR
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)