Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
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>