Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Returnerar ett värde av typen xs:booleskt värde som anger om värdet för $arg 1 innehåller ett strängvärde som anges av $arg 2.
Syntax
fn:contains ($arg1 as xs:string?, $arg2 as xs:string?) as xs:boolean?
Argument
$arg 1
Strängvärde som ska testas.
$arg 2
Delsträng att leta efter.
Anmärkningar
Om värdet för $arg 2 är en sträng med noll längd returnerar funktionen True. Om värdet för $arg 1 är en sträng med noll längd och värdet för $arg 2 inte är en sträng med noll längd, returnerar funktionen False.
Om värdet för $arg 1 eller $arg 2 är den tomma sekvensen behandlas argumentet som strängen med noll längd.
Funktionen contains() använder XQuerys standardsortering av Unicode-kodpunkter för strängjämförelsen.
Delsträngsvärdet som anges för $arg 2 måste vara mindre än eller lika med 4 000 tecken. Om det angivna värdet är större än 4 000 tecken uppstår ett dynamiskt feltillstånd och funktionen contains() returnerar en tom sekvens i stället för ett booleskt värde för True eller False. SQL Server genererar inte dynamiska fel i XQuery-uttryck.
För att få skiftlägesokänsliga jämförelser kan versaler eller gemener användas.
Kompletterande tecken (surrogatpar)
Beteendet för surrogatpar i XQuery-funktioner beror på databasens kompatibilitetsnivå och i vissa fall på standardnamnområdes-URI:n för funktioner. Mer information finns i avsnittet "XQuery Functions Are Surrogate-Aware" i avsnittet Breaking Changes to Database Engine Features in SQL Server 2016. Se även ALTER DATABASE Compatibility Level (Transact-SQL) and Collation and Unicode Support.
Exempel
Det här avsnittet innehåller XQuery-exempel mot XML-instanser som lagras i olika xml-kolumner i AdventureWorks-databasen.
A. Använda funktionen contains() XQuery för att söka efter en specifik teckensträng
Följande fråga hittar produkter som innehåller ordet Aerodynamic i sammanfattningsbeskrivningarna. Frågan returnerar ProductID och elementet <Summary> för sådana produkter.
--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
Resultat
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>