有効なブール値 (XQuery)
適用対象: SQL Server
有効なブール値は次のとおりです。
オペランドが空のシーケンスまたはブール値 false の場合は False。
それ以外の場合、値は true です。
有効なブール値は、単一のブール値、ノード シーケンス、または空のシーケンスを返す式に対して計算できます。 ブール値は、次の種類の式が処理されるときに暗黙的に計算されることに注意してください。
論理式
FLWOR 式の WHERE 句
次に、有効なブール値の例を示します。 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