Delen via


Effectieve Booleaanse waarde (XQuery)

van toepassing op:SQL Server-

Dit zijn de effectieve Booleaanse waarden:

  • Onwaar als de operand een lege reeks of een Booleaanse waarde onwaar is.

  • Anders is de waarde waar.

De effectieve Booleaanse waarde kan worden berekend voor expressies die één Booleaanse waarde, een knooppuntreeks of een lege reeks retourneren. Houd er rekening mee dat de Booleaanse waarde impliciet wordt berekend wanneer de volgende typen expressies worden verwerkt:

Hieronder volgt een voorbeeld van een effectieve Booleaanse waarde. Wanneer de als expressie wordt verwerkt, wordt de effectieve Booleaanse waarde van de voorwaarde bepaald. Omdat /a[1] een lege reeks retourneert, is de effectieve Booleaanse waarde onwaar. Het resultaat wordt geretourneerd als XML met één tekstknooppunt (onwaar).

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

In het volgende voorbeeld is de effectieve Booleaanse waarde waar, omdat de expressie een lege reeks retourneert.

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

Wanneer u query's uitvoert op xml- kolommen of variabelen, kunt u knooppunten van het booleaanse type hebben. De data() in dit geval retourneert een Booleaanse waarde. Als de query-expressie een Booleaanse werkelijke waarde retourneert, is de effectieve Booleaanse waarde waar, zoals wordt weergegeven in het volgende voorbeeld. Het volgende wordt ook geïllustreerd in het voorbeeld:

  • Er wordt een XML-schemaverzameling gemaakt. Het element <b> in de verzameling is van het booleaanse type.

  • Er wordt een getypte xml- variabele gemaakt en opgevraagd.

  • De expressie data(/b[1]) retourneert een Booleaanse waarde waar. Daarom is de effectieve Booleaanse waarde in dit geval waar.

  • De expressie data(/b[2]) retourneert een Booleaanse onwaarwaarde. Daarom is de effectieve Booleaanse waarde in dit geval onwaar.

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  

Zie ook

XQuery Basics
FLWOR-instructie en iteratie (XQuery)