有效的布尔值 (XQuery)

下面是有效的布尔值:

  • 如果操作数是空序列或布尔 False,则值为 False。
  • 否则,值为 True。

对于返回单个布尔值、节点序列或空序列的表达式,可以计算有效的布尔值。请注意,在处理下列类型的表达式时,将隐式计算布尔值:

下面是有效的布尔值示例。处理 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

请参阅

概念

XQuery 基础知识
FLWOR 语句和迭代 (XQuery)

帮助和信息

获取 SQL Server 2005 帮助