Hinweis
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.
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 ein Wert größer als 4000 Zeichen angegeben wird, tritt eine dynamische Fehlerbedingung auf, und die contains()-Funktion gibt eine leere Sequenz statt eines booleschen Wertes von True oder False zurück. SQL Server 2005 löst keine dynamischen Fehler für XQuery-Ausdrücke aus.
Beispiele:
Diese Thema stellt XQuery-Beispiele für XML-Instanzen bereit, die in verschiedenen Spalten des xml-Typs in der AdventureWorks-Datenbank gespeichert werden. Einen Überblick über diese Spalten bietet Darstellung des xml-Datentyps in der AdventureWorks-Datenbank.
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.
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.value('
contains( (/pd:ProductDescription/pd:Summary//*/text())[1],
"Aerodynamic")','bit') = 1
Beachten Sie hinsichtlich der vorherigen Abfrage Folgendes:
- Das Produktmodell-Beschreibungsdokument verwendet Namespaces. Aus diesem Grund definiert das namespace-Schlüsselwort das Namespacepräfix in XQuery Prolog.
- Die WHERE-Klausel verwendet die value()-Methode des xml-Datentyps. In der value-Methode wird die contains()-Funktion von XQuery zum Bestimmen verwendet, ob der <
Summary>-Text das Wort Aerodynamic enthält. Der von der contains()-Funktion zurückgegebene Boolesche Wert wird in ein Bit konvertiert. Dieses Bit wird dann mit 1 verglichen.
Dies ist das Ergebnis:
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