Freigeben über


substring-Funktion (XQuery)

Gibt einen Teil des Werts von $sourceString ab der Position zurück, die durch den Wert von $startingLoc, angegeben wird, und fährt mit der Anzahl von Zeichen fort, die durch den Wert von $length angegeben wird.

Syntax

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?

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 der Wert größer als die Länge von $sourceString ist, wird die Zeichenfolge mit der Länge null zurückgegeben.

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

Hinweise

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 darf größer als die Anzahl der Zeichen im Wert von $sourceString ab der Startposition sein. In diesem Fall gibt die Unterzeichenfolge 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 das Argument als Zeichenfolge mit der Länge null behandelt. Wenn $startingLoc oder $length die leere Sequenz ist, wird die leere Sequenz zurückgegeben.

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-Funktionen sind ersatzzeichenabhängig" im Thema Fehlerhafte Änderungen an Funktionen des Datenbankmoduls in SQL Server 2012. Siehe auch ALTER DATABASE-Kompatibilitätsgrad (Transact-SQL) und Sortierung und Unicode-Unterstützung.

Implementierungseinschränkungen

SQL Server verlangt, dass $startingLoc und $length parameters vom Typ xs:decimal und nicht vom Typ xs:double sind.

SQL Server lässt zu, dass $startingLoc und $length die leere Sequenz sind, weil die leere Sequenz ein möglicher Wert ist, wenn dynamische Fehler () zugeordnet werden.

Beispiele

Dieses Thema stellt XQuery-Beispiele für XML-Instanzen bereit, die in verschiedenen Spalten vom xml-Datentyp in der AdventureWorks2012 -Datenbank gespeichert sind.

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

Die Abfrage ruft die ersten 50 Zeichen vom Text ab, in dem das Produktmodell beschrieben wird, 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 da Sie diese Elemente überspringen und den gesamten Text abrufen.

  • Die substring()-Funktion ruft die ersten 50 Zeichen aus dem von string() abgerufenen Zeichenfolgenwert ab.

Dies ist das 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>
...

Siehe auch

Verweis

XQuery-Funktionen für den xml-Datentyp