Funzione substring (XQuery)

Restituisce una parte del valore di $sourceString, a partire dalla posizione corrispondente al valore di $startingLoc, e per il numero di caratteri specificato dal valore di $length.

Sintassi

fn:substring($sourceString as xs:string?,
                          $startingLoc  as as xs:decimal?) as xs:string?

fn:substring($sourceString as xs:string?,
                          $startingLoc as xs:decimal?,
                          $length as xs:decimal?) as xs:string?

Argomenti

  • $sourceString
    Stringa di origine.

  • $startingLoc
    Punto della stringa di origine corrispondente al punto iniziale della sottostringa. Se il valore è negativo o è uguale a 0, vengono restituiti solo i caratteri nelle posizioni maggiori di zero. Se è maggiore della lunghezza di $sourceString, viene restituita la stringa di lunghezza zero.

  • $length
    Numero di caratteri da recuperare (facoltativo). Se non è specificato, restituisce tutti i caratteri a partire dalla posizione specificata in $startingLoc fino alla fine della stringa.

Osservazioni

La versione della funzione con tre argomenti restituisce i caratteri di $sourceString il cui operatore di posizione $p è soggetto alla regola seguente:

fn:round($startingLoc) <= $p < fn:round($startingLoc) + fn:round($length)

Il valore di $length può essere maggiore del numero di caratteri nel valore di $sourceString successivi alla posizione iniziale. In questo caso, la sottostringa restituisce i caratteri fino alla fine di $sourceString.

Il primo carattere di una stringa si trova nella posizione 1.

Se il valore di $sourceString è una sequenza vuota, viene gestito come una stringa di lunghezza zero. Se invece $startingLoc o $length è una sequenza vuota, viene restituita la sequenza vuota.

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 XQuery substring() per recuperare le descrizioni parziali del modello del prodotto disponibili nell'elemento Summary

La query recupera i primi 50 caratteri del testo della descrizione del modello del prodotto, ovvero l'elemento <Summary> nel documento.

WITH XMLNAMESPACES ('https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS pd)
SELECT ProductModelID, CatalogDescription.query('
    <Prod>{ substring(string((/pd:ProductDescription/pd:Summary)[1]), 1, 50) }</Prod>
 ') as Result
FROM Production.ProductModel
where CatalogDescription.exist('/pd:ProductDescription')  = 1;

Dalla query precedente si noti quanto segue:

  • La funzione string() restituisce il valore stringa dell'elemento <Summary>. L'utilizzo di questa funzione è determinato dal fatto che l'elemento <Summary> contiene sia il testo che i sottoelementi (elementi di formattazione html) e che tali elementi verranno ignorati, mentre verrà recuperato tutto il testo.

  • La funzione substring() recupera i primi 50 caratteri del valore stringa recuperato da string().

Risultato parziale:

ProductModelID Result

-------------- -----------------------------------------

19 <Prod>Our top-of-the-line competition mountain bike.</Prod>

23 <Prod>Suitable for any type of riding, on or off-roa</Prod>

...

Limitazioni di implementazione

Limitazioni:

  • SQL Server richiede che $startingLoc e $length parameters siano di tipo xs:decimal anziché di tipo xs:double.

  • SQL Server consente che$startingLoc e $length rappresentino la sequenza vuota, perché tale sequenza è un possibile valore risultante dal mapping di errori dinamici a ().

  • Le coppie di surrogati Unicode UTF-16 vengono considerate come due caratteri anziché come uno.

Vedere anche

Riferimento