Função string (XQuery)
Retorna o valor de $arg representado como uma cadeia de caracteres.
Sintaxe
fn:string() as xs:string
fn:string($arg as item()?) as xs:string
Argumentos
- $arg
É um nó ou um valor atômico.
Comentários
Se $arg for a seqüência vazia, a cadeia de caracteres de comprimento zero será retornada.
Se $arg for um nó, a função retornará o valor da cadeia de caracteres do nó que é obtido usando o acessador de valor da cadeia de caracteres. Isso está definido nas especificações do W3C XQuery 1.0 e do XPath 2.0 Data Model.
Se $arg for um valor atômico, a função retornará a mesma cadeia de caracteres retornada pela expressão convertida como xs:string, $arg, exceto quando indicado de forma diferente.
Se o tipo de $arg for xs:anyURI, o URI será convertido em uma cadeia de caracteres sem escapar caracteres especiais.
Nessa implementação, fn:string() sem um argumento só pode ser usada no contexto de um predicado dependente de contexto. Mais precisamente, ela só pode ser usada dentro de colchetes ([]).
Exemplos
Este tópico fornece exemplos de XQuery em instâncias XML armazenadas em várias colunas de tipo xml no banco de dados AdventureWorks. Para obter uma visão geral de cada uma dessas colunas, consulte Representação de tipo de dados xml no banco de dados do AdventureWorks.
A. Usando a função string
A consulta a seguir recupera o nó do elemento filho <Features> do elemento <ProductDescription>.
SELECT CatalogDescription.query('
declare namespace PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
/PD:ProductDescription/PD:Features
')
FROM Production.ProductModel
WHERE ProductModelID=19
Este é o resultado parcial:
<PD:Features xmlns:PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription">
These are the product highlights.
<p1:Warranty xmlns:p1="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain">
<p1:WarrantyPeriod>3 years</p1:WarrantyPeriod>
<p1:Description>parts and labor</p1:Description>
</p1:Warranty>
...
</PD:Features>
Se você especificar a função string(), obterá o valor da cadeia de caracteres do nó especificado.
SELECT CatalogDescription.query('
declare namespace PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
string(/PD:ProductDescription[1]/PD:Features[1])
')
FROM Production.ProductModel
WHERE ProductModelID=19
Este é o resultado parcial.
These are the product highlights.
3 yearsparts and labor...
B. Usando a função string em vários nós
No exemplo a seguir, uma instância XML é atribuída a uma variável do tipo xml. As consultas são especificadas para ilustrar o resultado da aplicação de string() em vários nós.
declare @x xml
set @x = '<?xml version="1.0" encoding="UTF-8" ?>
<!-- This is a comment -->
<root>
<a>10</a>
just text
<b attr="x">20</b>
</root>
'
A consulta a seguir recupera o valor da cadeia de caracteres do nó do documento. Esse valor é formado pela concatenação do valor da cadeia de caracteres de todos os seus nós de texto descendentes.
select @x.query('string(/)')
Este é o resultado:
This is a comment 10
just text
20
A consulta a seguir tenta recuperar o valor da cadeia de caracteres de um nó de instrução de processamento. O resultado é uma seqüência vazia, porque não contém um nó de texto.
select @x.query('string(/processing-instruction()[1])')
A consulta a seguir recupera o valor da cadeia de caracteres do nó de comentário e retorna o nó de texto.
select @x.query('string(/comment()[1])')
Este é o resultado:
This is a comment