有効なブール値 (XQuery)
次に有効なブール値を示します。
オペランドが空のシーケンスまたはブール型の false である場合、false になります。
それ以外の場合、値は true になります。
有効なブール値は、1 つのブール値、ノード シーケンス、または空のシーケンスを返す式で計算できます。 次の型の式が処理されるとき、ブール値が暗黙的に計算されます。
次に、有効なブール値の例を示します。 if 式が処理されるときに、条件で有効なブール値が決まります。 /a[1] は空のシーケンスを返すので、有効なブール値は false になります。 1 つのテキスト ノード (false) を含む XML として結果が返されます。
value is false
DECLARE @x XML
SET @x = '<b/>'
SELECT @x.query('if (/a[1]) then "true" else "false"')
go
次の例では、式が空ではないシーケンスを返すので、有効なブール値は true になります。
DECLARE @x XML
SET @x = '<a/>'
SELECT @x.query('if (/a[1]) then "true" else "false"')
go
型指定された xml 列または変数のクエリを行うとき、ブール型のノードを持つことができます。 この場合、data() がブール値を返します。 クエリ式がブール値 true を返す場合、次の例で示すように、有効なブール値は true になります。 この例では、次のことも示しています。
XML スキーマ コレクションが作成されます。 コレクション内の要素 <b> はブール型です。
型指定された xml 変数が作成され、クエリが実行されます。
式 data(/b[1]) は、ブール型値 true を返します。 したがって、この場合の有効なブール値は true になります。
式 data(/b[2]) は、ブール型値 false を返します。 したがって、この場合の有効なブール値は 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