Condividi tramite


Funzione string (XQuery)

Restituisce il valore di $arg rappresentato sotto forma di 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 utilizzando la funzione di accesso al valore stringa, 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 specificare i caratteri di escape per i caratteri speciali.
  • In questa implementazione fn:string() può essere utilizzata senza un argomento solo nel contesto di un predicato dipendente dal contesto. In particolare, può essere utilizzata solo fra parentesi quadre ([ ]).

Esempi

In questo argomento vengono forniti esempi di utilizzo del linguaggio XQuery sulle istanze XML archiviate in diverse colonne di tipo xml nel database AdventureWorks. Per una panoramica su ognuna di queste colonne, vedere Rappresentazione del tipo di dati XML nel database AdventureWorks.

A. Utilizzo della funzione string

La query seguente recupera il nodo dell'elemento figlio <Features> 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. Sono specificate query che illustrano il risultato dell'applicazione di string() su 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 dal concatenamento 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 

Vedere anche

Riferimento

Funzioni XQuery per il tipo di dati XML

Guida in linea e informazioni

Assistenza su SQL Server 2005