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 Funktion nicht
Die WHERE-Klausel eines FLWOR-Ausdrucks
Das folgende Beispiel zeigt einen effektiven booleschen Wert. Wenn der 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 eingegebener XML-Spalten oder -Variablen können Knoten vom typ boolean-Typ vorhanden sein. In diesem Fall wird ein boolescher Wert zurückgegeben. 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 Typ Boolean.
Eine typierte 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 Statement and Iteration (XQuery) (FLWOR-Anweisung und -Iteration (XQuery))