适用范围:SQL Server
下面是有效的布尔值:
- 如果操作数是空序列或布尔值 False,则为 False。 
- 否则,值为 True。 
对于返回单个布尔值、节点序列或空序列的表达式,可以计算有效的布尔值。 请注意,在处理下列类型的表达式时,将隐式计算布尔值:
- 逻辑表达式 
- not 函数 
- FLWOR 表达式的 WHERE 子句 
下面是有效的布尔值示例。 
              处理 if 表达式时,将确定条件的有效布尔值。 由于 /a[1] 返回空序列,因此有效的布尔值为 False。 结果以包含一个文本节点 (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