Condividi tramite


Funzioni di accesso dati - string (XQuery)

Si applica a: SQL Server

Restituisce il valore di $arg rappresentato come stringa.

Sintassi

  
fn:string() as xs:string  
fn:string($arg as item()?) as xs:string  

Argomenti

$arg
È un nodo o un valore atomico.

Osservazioni:

  • Se $arg è la sequenza vuota, viene restituita la stringa di lunghezza zero.

  • Se $arg è un nodo, la funzione restituisce il valore stringa del nodo ottenuto usando la funzione di accesso string-value. definita nella specifica W3C "XQuery 1.0 and XPath 2.0 Data Model".

  • Se $arg è un valore atomico, la funzione restituisce la stessa stringa restituita dal cast dell'espressione come xs:string, $arg, tranne quando diversamente specificato.

  • Se il tipo di $arg è xs:anyURI, l'URI viene convertito in una stringa senza eseguire l'escape di caratteri speciali.

  • In questa implementazione, fn:string() senza un argomento può essere usato solo nel contesto di un predicato dipendente dal contesto. In particolare, può essere utilizzata solo tra parentesi ([ ]).

Esempi

In questo argomento vengono forniti esempi di XQuery su istanze XML archiviate in varie colonne di tipo xml nel database AdventureWorks.

R. Utilizzo della funzione string

La query seguente recupera il <Features> nodo elemento figlio dell'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  

Risultato parziale:

<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 si specifica la funzione string(), si riceve il valore stringa del nodo specificato.

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  

Di seguito è riportato il risultato parziale.

These are the product highlights.   
3 yearsparts and labor...    

B. Utilizzo della funzione string su vari nodi

Nell'esempio seguente, un'istanza XML viene assegnata a una variabile di tipo XML. Le query vengono specificate per illustrare il risultato dell'applicazione di string() a vari nodi.

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

La query seguente recupera il valore stringa del nodo del documento. Il valore è formato dalla concatenazione del valore stringa di tutti i relativi nodi di testo discendenti.

select @x.query('string(/)')  

Risultato:

This is a comment 10  
just text  
 20  

La query seguente tenta il recupero del valore stringa del nodo di un'istruzione di elaborazione. Il risultato è una sequenza vuota, poiché non contiene un nodo di testo.

select @x.query('string(/processing-instruction()[1])')  

La query seguente recupera il valore stringa del nodo di commento e restituisce il nodo di testo.

select @x.query('string(/comment()[1])')  

Risultato:

This is a comment   

Vedi anche

Funzioni XQuery per il tipo di dati XML