布尔构造函数 - true (XQuery)

适用范围:SQL Server

返回 xs:boolean 值 True。 这等效于 xs:boolean("1")

语法

fn:true() as xs:boolean  

示例

本主题针对存储在 AdventureWorks 数据库中各种 xml 类型列中的 XML 实例提供 XQuery 示例。

A. 使用 XQuery 布尔函数 true()

以下示例查询非类型化的 xml 变量。 如果“aaa”是属性值,则 value() 方法中的表达式返回布尔值 true()。 xml 数据类型的 value() 方法将布尔值转换为位并返回它。

DECLARE @x XML  
SET @x= '<ROOT><elem attr="aaa">bbb</elem></ROOT>'  
select @x.value(' if ( (/ROOT/elem/@attr)[1] eq "aaa" ) then fn:true() else fn:false() ', 'bit')  
go  
-- result = 1  

在以下示例中,针对类型化的 xml 列指定查询。 表达式 if 检查元素的类型化布尔值,并相应地返回构造的 <ROOT> XML。 该示例执行以下操作:

  • 创建一个 XML 架构集合,该集合定义 <ROOT> xs:boolean 类型的元素。

  • 使用 XML 架构集合创建具有类型化的 xml 列的表。

  • 将 XML 实例保存在列中并查询它。

-- Drop table if exist  
--DROP TABLE T  
--go  
DROP XML SCHEMA COLLECTION SC  
go  
CREATE XML SCHEMA COLLECTION SC AS '  
<schema xmlns="http://www.w3.org/2001/XMLSchema"  
targetNamespace="QNameXSD" >  
      <element name="ROOT" type="boolean" nillable="true"/>  
</schema>'  
go  
CREATE TABLE T (xmlCol XML(SC))  
go  
-- following OK  
insert into T values ('<ROOT xmlns="QNameXSD">true</ROOT>')  
 go  
-- Retrieve the local name.   
SELECT xmlCol.query('declare namespace a="QNameXSD";   
   if (/a:ROOT[1] eq true()) then  
       <result>Found boolean true</result>  
   else  
       <result>Found boolean false</result>')  
  
FROM T  
-- result = <result>Found boolean true</result>  
-- Clean up  
DROP TABLE T  
go  
DROP XML SCHEMA COLLECTION SC  
go  

另请参阅

布尔构造函数 (XQuery)