Funktionen für Zeichenfolgenwerte – contains

Gilt für:SQL Server

Gibt einen Wert vom Typ xs:boolean zurück, der angibt, ob der Wert von $arg 1 einen durch $arg 2 angegebenen Zeichenfolgenwert enthält.

Syntax

  
fn:contains ($arg1 as xs:string?, $arg2 as xs:string?) as xs:boolean?  

Argumente

$arg 1
Zu testender Zeichenfolgenwert.

$arg 2
Abzurufende Unterzeichenfolge.

Bemerkungen

Wenn der Wert von $arg 2 eine Zeichenfolge der Länge null ist, gibt die Funktion True zurück. Wenn der Wert von $arg 1 eine Zeichenfolge der Länge null ist und der Wert von $arg 2 keine Zeichenfolge der Länge null ist, gibt die Funktion False zurück.

Wenn der Wert von $arg 1 oder $arg 2 die leere Sequenz ist, wird das Argument als Zeichenfolge der Länge null behandelt.

Die contains()-Funktion verwendet die Unicode-Codepunkt-Standardsortierung von XQuery für den Zeichenfolgenvergleich.

Der für $arg 2 angegebene Teilzeichenfolgenwert muss kleiner oder gleich 4.000 Zeichen sein. Wenn der angegebene Wert größer als 4.000 Zeichen ist, tritt eine dynamische Fehlerbedingung auf, und die contains()-Funktion gibt eine leere Sequenz anstelle des booleschen Werts True oder False zurück. SQL Server löst keine dynamischen Fehler für XQuery-Ausdrücke aus.

Um Vergleiche ohne Beachtung der Groß-/Kleinschreibung zu erhalten, können die Groß - oder Kleinschreibungsfunktionen verwendet werden.

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 ersatzfähig" im Thema Breaking Changes to Database Engine Features in SQL Server 2016. Weitere Informationen finden Sie unter ALTER DATABASE Compatibility Level (Transact-SQL) und Sortierung und Unicode-Unterstützung.

Beispiele

Dieses Thema enthält XQuery-Beispiele für XML-Instanzen, die in verschiedenen Xml-Typspalten in der AdventureWorks-Datenbank gespeichert sind.

A. Verwenden der contains()-Funktion von XQuery zum Suchen nach einer bestimmten Zeichenfolge

Die folgende Abfrage sucht nach Produkten, die das Wort Aerodynamic in den Zusammenfassungsbeschreibungen enthalten. Die Abfrage gibt die ProductID und das <Summary> Element für solche Produkte zurück.

--The product model description document uses  
--namespaces. The WHERE clause uses the exit()  
--method of the xml data type. Inside the exit method,  
--the XQuery contains() function is used to  
--determine whether the <Summary> text contains the word  
--Aerodynamic.   
  
USE AdventureWorks2022;
GO  
WITH XMLNAMESPACES ('https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS pd)  
SELECT ProductModelID, CatalogDescription.query('  
      <Prod>  
         { /pd:ProductDescription/@ProductModelID }  
         { /pd:ProductDescription/pd:Summary }  
      </Prod>  
 ') as Result  
FROM Production.ProductModel  
where CatalogDescription.exist('  
   /pd:ProductDescription/pd:Summary//text()  
    [contains(., "Aerodynamic")]') = 1  

Ergebnisse

ProductModelID Result

-------------- ---------

28 <Prod ProductModelID="28">

<pd:Summary xmlns:pd=

"https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription">

<p1:p xmlns:p1="http://www.w3.org/1999/xhtml">

A TRUE multi-sport bike that offers streamlined riding and

a revolutionary design. Aerodynamic design lets you ride with

the pros, and the gearing will conquer hilly roads.</p1:p>

</pd:Summary>

</Prod>

Weitere Informationen

XQuery-Funktionen für den xml-Datentyp