布尔构造函数 - 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。 该示例执行以下操作:

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

  • 使用 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)