有効なブール値 (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
参照
概念
XQuery の基礎
FLWOR ステートメントと繰り返し (XQuery)