substring-Funktion (XQuery)
Gibt einen Teil des Wertes 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.
Beispiele:
Dieses Thema stellt XQuery-Beispiele für XML-Instanzen bereit, die in verschiedenen Spalten des xml-Typs in der AdventureWorks-Datenbank gespeichert werden. Einen Überblick über diese Spalten bietet Darstellung des xml-Datentyps in der AdventureWorks-Datenbank.
A. Verwenden der substring()-Funktion von XQuery zum Abrufen von Teilzusammenfassungsbeschreibungen der Produktmodelle
Die Abfrage ruft die ersten 50 Zeichen des Textes ab, der das Produktmodell beschreibt, 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 aus der vorherigen Abfrage Folgendes:
- Die string()-Funktion gibt den Zeichenfolgenwert des <
Summary
>-Elements zurück. Die Funktion wird verwendet, weil das <Summary
>-Element Text und Unterelemente (html-Formatierungselemente) enthält und weil Sie diese Elemente überspringen und den gesamten Text abrufen werden. - 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>
...
Implementierungseinschränkungen
Die folgenden Einschränkungen sind zu beachten:
- 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.
- Unicode UTF-16-Ersatzpaare werden als zwei Zeichen statt als ein Zeichen gezählt.
Siehe auch
Verweis
XQuery-Funktionen für den xml-Datentyp