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:
Logische Ausdrücke
Die nicht-Funktion
Die WHERE-Klausel eines FLWOR-Ausdrucks
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