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