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 AdventureWorks2008R2. Per una panoramica su ognuna di queste colonne, vedere Rappresentazione del tipo di dati XML nel database AdventureWorks2008R2.

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 years parts 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 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

Vedere anche

Riferimento