Funktionen für Zeichenfolgenwerte – substring

Gilt für:SQL Server

Gibt einen Teil des Werts von $sourceString zurück, beginnend an der Position, die durch den Wert von $startingLoc angegeben wird, und wird für die Anzahl der Zeichen fortgesetzt, die durch den Wert von $length angegeben werden.

Syntax

  
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?  

Argumente

$sourceString
Quellzeichenfolge.

$startingLoc
Ausgangspunkt in der Quellzeichenfolge, an dem die Unterzeichenfolge beginnt. Wenn dieser Wert negativ oder 0 ist, werden nur die Zeichen an Positionen größer null zurückgegeben. Wenn sie größer als die Länge des $sourceString ist, wird die Zeichenfolge der Länge Null zurückgegeben.

$length
[optional] Anzahl der abzurufenden Zeichen. Wenn nicht angegeben, werden alle Zeichen von der in $startingLoc angegebenen Position bis zum Ende der Zeichenfolge zurückgegeben.

Bemerkungen

Die Version der Funktion mit drei Argumenten gibt die Zeichen in $sourceString zurück, deren Position $p genügt:

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

Der Wert von $length kann größer sein als die Anzahl der Zeichen im Wert von $sourceString nach der Startposition. In diesem Fall gibt die Teilzeichenfolge die Zeichen bis zum Ende von $sourceString zurück.

Das erste Zeichen einer Zeichenfolge befindet sich an Position 1.

Wenn der Wert von $sourceString die leere Sequenz ist, wird er als leere Zeichenfolge behandelt. Andernfalls wird die leere Sequenz zurückgegeben, wenn $startingLoc oder $length die leere Sequenz ist.

Ergänzende Zeichen (Ersatzpaare)

Das Verhalten von Ersatzzeichenpaaren in XQuery-Funktionen hängt vom Kompatibilitätsgrad der Datenbank ab und in einigen Fällen vom Standardnamespace-URI für Funktionen. Weitere Informationen finden Sie im Abschnitt "XQuery Functions Are Surrogate-Aware" im Thema Breaking Changes to Database Engine Features in SQL Server 2016. Weitere Informationen finden Sie unter ALTER DATABASE-Kompatibilitätsgrad (Transact-SQL) und Sortierungs- und Unicode-Unterstützung.

Implementierungseinschränkungen

SQL Server erfordert, dass die Parameter $startingLoc und $length vom Typ xs:decimal anstelle von xs:double sein müssen.

SQL Server ermöglicht es, $startingLoc und $length die leere Sequenz zu sein, da die leere Sequenz ein möglicher Wert ist, da dynamische Fehler () zugeordnet werden.

Beispiele

Dieses Thema enthält XQuery-Beispiele für XML-Instanzen, die in verschiedenen Xml-Typspalten in der AdventureWorks2022 Datenbank gespeichert sind.

A. Verwenden der substring()-Funktion von XQuery zum Abrufen von Teilzusammenfassungsbeschreibungen der Produktmodelle

Die Abfrage ruft die ersten 50 Zeichen des Texts ab, der das Produktmodell beschreibt, also das <Summary> Element im Dokument.

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;  

Beachten Sie hinsichtlich der vorherigen Abfrage Folgendes:

  • Die string() -Funktion gibt den Zeichenfolgenwert des<Summary> Elements zurück. Diese Funktion wird verwendet, da das <Summary> Element sowohl den Text als auch die Unterelemente (HTML-Formatierungselemente) enthält, und weil Sie diese Elemente überspringen und den gesamten Text abrufen.

  • Die substring() -Funktion ruft die ersten 50 Zeichen aus dem Zeichenfolgenwert ab, der von string() abgerufen wird.

Dies ist ein Teilergebnis:

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

Weitere Informationen

XQuery-Funktionen für den xml-Datentyp