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