Freigeben über


Effektiver boolescher Wert (XQuery)

Gilt für:SQL Server

Folgende Werte sind effektive boolesche Werte:

  • False, wenn der Operand eine leere Sequenz oder ein boolesches False ist.

  • Anderenfalls ist der Wert True.

Der effektive boolesche Wert kann für Ausdrücke berechnet werden, die einen einzelnen booleschen Wert, eine Knotensequenz oder eine leere Sequenz zurückgeben. Beachten Sie, dass der boolesche Wert implizit berechnet wird, wenn folgende Typen von Ausdrücken verarbeitet werden:

Das folgende Beispiel zeigt einen effektiven booleschen Wert. Wenn der if-Ausdruck verarbeitet wird, wird der effektive boolesche Wert der Bedingung bestimmt. Da /a[1] eine leere Sequenz zurückgibt, ist der effektive boolesche Wert False. Das Ergebnis wird als XML mit einem Textknoten (false) zurückgegeben.

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

Im folgenden Beispiel ist der effektive boolesche Wert True, weil der Ausdruck eine nicht leere Sequenz zurückgibt.

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

Beim Abfragen von typisierten XML-Spalten oder - Variablen können Sie Über Knoten vom typ Boolean verfügen. Data () gibt in diesem Fall einen booleschen Wert zurück. Wenn der Abfrageausdruck einen booleschen Wert zurückgibt, ist der effektive boolesche Wert True, was im nächsten Beispiel dargestellt ist. Das Beispiel zeigt außerdem Folgendes:

  • Es wird eine XML-Schemaauflistung erstellt. Das Element <b> in der Auflistung ist vom booleschen Typ.

  • Eine typisierte XML-Variable wird erstellt und abgefragt.

  • Der Ausdruck data(/b[1]) gibt einen booleschen True-Wert zurück. Der effektive boolesche Wert ist deshalb in diesem Fall True.

  • Der Ausdruck data(/b[2]) gibt einen booleschen False-Wert zurück. Der effektive boolesche Wert ist deshalb in diesem Fall False.

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  

Weitere Informationen

XQuery-Grundlagen
FLWOR-Anweisung und -Iteration (XQuery)