Anmerkung
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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
$arg1
Zu testender Zeichenfolgenwert.
$arg2
Abzurufende Unterzeichenfolge.
Hinweise
Wenn der Wert von $arg 2 eine leere Zeichenfolge ist, gibt die Funktion True zurück. Wenn der Wert von $arg 1 eine leere Zeichenfolge ist und der Wert von $arg 2 keine leere Zeichenfolge ist, gibt die Funktion False zurück.
Wenn der Wert von $arg 1 oder $arg 2 die leere Sequenz ist, wird das Argument als leere Zeichenfolge 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 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 für XQuery-Ausdrücke aus.
Um Vergleiche zwischen Groß- und 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 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.
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 Functions against the xml Data Type (XQuery-Funktionen für den xml-Datentyp)