Partilhar via


Funções do Acessador de Dados – string (XQuery)

Aplica-se: SQL Server

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ó obtido usando o acessador de valor de 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 outra forma.

  • Se o tipo de $arg for xs:anyURI, o URI será convertido em uma cadeia de caracteres sem caracteres especiais de escape.

  • Nesta implementação, fn:string() sem um argumento só pode ser usado no contexto de um predicado dependente do contexto. Mais precisamente, só pode ser usado entre parênteses ([]).

Exemplos

Este tópico fornece exemplos de XQuery em relação a instâncias XML armazenadas em várias colunas de tipo xml no banco de dados AdventureWorks.

R. Usando a função string

A consulta a seguir recupera o <Features> nó do elemento filho do <ProductDescription> elemento.

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(), receberá o valor da string 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() a 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 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:

This is a comment   

Confira também

Funções XQuery em Tipos de Dados XML