Funktionen für Zeichenfolgenwerte – substring
Gilt für:SQL Server
Gibt einen Teil des Werts $sourceString zurück, beginnend an der Position, die durch den Wert $startingLoc angegeben wurde, 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 aus 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 $length kann größer als die Anzahl der Zeichen im Wert $sourceString nach der Startposition sein. In diesem Fall gibt die Teilzeichenfolge die Zeichen bis zum Ende der $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 Datenbank-Engine Features in SQL Server 2016. Siehe auch ALTER DATABASE Compatibility Level (Transact-SQL) und Sortierung und Unicode-Unterstützung.
Implementierungseinschränkungen
SQL Server erfordert die $startingLoc und $length Parameter vom Typ "xs:decimal" anstelle von "xs:double".
SQL Server ermöglicht es, $startingLoc und $length die leere Sequenz zu sein, da die leere Sequenz ein möglicher Wert ist, weil 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, das <Summary
> Element im Dokument, beschreibt.
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 Zeichenfolgenfunktion 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 Funktion teilstring() ruft die ersten 50 Zeichen aus dem Zeichenfolgenwert ab, der von der Zeichenfolge()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 Functions against the xml Data Type (XQuery-Funktionen für den xml-Datentyp)