Freigeben über


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)