布尔构造函数 - 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