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 sequê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 parênteses ([]).

Exemplos

Este tópico fornece exemplos de XQuery em instâncias XML armazenadas em várias colunas do tipo xml no banco de dados AdventureWorks2008R2. Para obter uma visão geral de cada uma dessas colunas, consulte Representação de tipo de dados xml no banco de dados do AdventureWorks2008R2.

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">

Estes são os realces de produto.

<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.

Estes são os realces de produto.

partes e trabalho de 3 anos...

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:

Este é um comentário 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 sequê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:

Este é um comentário

Consulte também

Referência