Funzioni su valori stringa - substring

Si applica a: sìSQL Server (tutte le versioni supportate)

Restituisce parte del valore di $sourceString, a partire dalla posizione indicata dal valore di $startingLoc e continua per il numero di caratteri indicato dal valore di $length.

Sintassi

  
fn:substring($sourceString as xs:string?,  
                          $startingLoc 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 della $sourceString, viene restituita la stringa di lunghezza zero.

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

Commenti

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 dopo la posizione iniziale. In questo caso, la sottostringa restituisce i caratteri fino alla fine del $sourceString.

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

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

Caratteri supplementari (coppie di surrogati)

Il comportamento delle coppie di surrogati nelle funzioni XQuery dipende dal livello di compatibilità del database e, in alcuni casi, dall'URI dello spazio dei nomi predefinito per le funzioni. Per ulteriori informazioni, vedere la sezione "funzioni XQuery sono compatibili con i surrogati" nell'argomento modifiche di rilievo apportate alle funzionalità di motore di database in SQL Server 2016. Vedere anche livello di compatibilità ALTER DATABASE (Transact-SQL) e regole di confronto e supporto Unicode.

Limitazioni di implementazione

SQL Server richiede che i parametri $startingLoc e $length siano di tipo xs: Decimal anziché di tipo xs: Double.

SQL Server consente $startingLoc e $length la sequenza vuota, perché la sequenza vuota è un possibile valore in seguito a errori dinamici di cui è stato eseguito il mapping a ().

Esempio

In questo argomento vengono forniti esempi di XQuery sulle istanze XML archiviate in diverse colonne di tipo XML nel AdventureWorks2012 database.

R. 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 che descrive il modello del prodotto, il <Summary> elemento 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>. Questa funzione viene usata, perché l' Summary elemento <> contiene sia il testo che i sottoelementi (elementi di formattazione HTML) e perché si ignoreranno questi elementi e si recupererà tutto il testo.

  • La funzione substring () recupera i primi 50 caratteri dal valore stringa recuperato dalla stringa ().

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>  
...  

Vedere anche

Funzioni XQuery per il tipo di dati XML