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