Freigeben über


contains-Funktion (XQuery)

Gibt einen Wert vom Typ "xs:boolean" zurück, der angibt, ob der Wert von $arg1 einen Zeichenfolgenwert enthält, der durch $arg2 angegeben wird.

Syntax

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

Argumente

  • $arg1
    Zu testender Zeichenfolgenwert.

  • $arg2
    Abzurufende Unterzeichenfolge.

Hinweise

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

Wenn der Wert von $arg1 oder $arg2 die leere Sequenz ist, wird das Argument als die Zeichenfolge mit der Länge null behandelt.

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

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

Für Vergleiche, bei denen nicht zwischen Groß- und Kleinschreibung unterschieden wird, kann die upper-case- oder lower-case-Funktion 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 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.

Beispiele

Dieses Thema stellt XQuery-Beispiele für XML-Instanzen bereit, die in verschiedenen Spalten des XML-Datentyps 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 ProductID und das <Summary>-Element für derartige 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 AdventureWorks
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>

Siehe auch

Verweis

XQuery-Funktionen für den xml-Datentyp