true (función de XQuery)
Devuelve el valor xs:boolean True. Es equivalente a xs:boolean("1").
Sintaxis
fn:true() as xs:boolean
Ejemplos
En este tema se ofrecen ejemplos de consultas XQuery con instancias XML almacenadas en varias columnas de tipo xml en la base de datos AdventureWorks.
A.Utilizar la función booleana true() de XQuery
En el ejemplo siguiente se consulta una variable xml sin tipo. La expresión del método value() devuelve el valor booleano true() si "aaa" es el valor del atributo. El método value() del tipo de datos xml convierte el valor booleano en bit y lo devuelve.
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
En el ejemplo siguiente, la consulta se especifica en una columna xml con tipo. La expresión if comprueba el valor booleano con tipo del elemento <ROOT> y devuelve el XML generado, según corresponda. En el ejemplo se realizan las operaciones siguientes:
Se crea una colección de esquemas XML que define el elemento <ROOT> del tipo xs:boolean.
Se crea una tabla con una columna xml con tipo utilizando la colección de esquemas XML.
Se guarda una instancia XML en la columna y se consulta.
-- 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