true 函数 (XQuery)
使 xs:boolean 返回 True 值。这等效于 xs:boolean("1")。
语法
fn:true() as xs:boolean
示例
本主题提供了一些对 XML 实例的 XQuery 示例,这些实例存储在 AdventureWorks2008R2 数据库内不同的 xml 类型列中。有关这些列的概述,请参阅 AdventureWorks2008R2 数据库中的 xml 数据类型表示形式。
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。该示例执行以下操作:
创建一个定义 xs:boolean 类型的 <ROOT> 元素的 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