Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Vrátí hodnotu typu xs:boolean určující, zda hodnota $arg 1 obsahuje řetězcovou hodnotu určenou $arg 2.
Syntax
fn:contains ($arg1 as xs:string?, $arg2 as xs:string?) as xs:boolean?
Argumenty
$arg 1
Řetězcová hodnota, která se má testovat.
$arg 2
Podřetětěr, který chcete vyhledat.
Poznámky
Pokud je hodnota $arg 2 řetězec nulové délky, vrátí funkce True. Pokud je hodnota $arg 1 řetězec nulové délky a hodnota $arg 2 není řetězec nulové délky, vrátí funkce false.
Pokud je hodnota $arg 1 nebo $arg 2 prázdná sekvence, argument se považuje za řetězec nulové délky.
Funkce contains() používá pro porovnání řetězců výchozí kolaci kódu Unicode XQuery.
Hodnota podřetětěce zadaná pro $arg 2 musí být menší nebo rovna 4000 znakům. Pokud je zadaná hodnota větší než 4000 znaků, dojde k dynamické chybové podmínce a funkce contains() vrátí prázdnou sekvenci místo logické hodnoty True nebo False. SQL Server nevyvolá dynamické chyby u výrazů XQuery.
Pokud chcete získat porovnání bez rozlišování velkých a malých písmen, můžete použít velkých nebo malých písmen.
Doplňkové znaky (náhradní dvojice)
Chování náhradních párů ve funkcích XQuery závisí na úrovni kompatibility databáze a v některých případech na výchozím identifikátoru URI oboru názvů pro funkce. Další informace najdete v části Funkce XQuery Jsou náhradní funkce v tématu Zásadní změny funkcí databázového stroje v SQL Serveru 2016. Viz také úroveň kompatibility ALTER DATABASE (Transact-SQL) a kolace a podporu kódování Unicode.
Příklady
Toto téma obsahuje příklady XQuery pro instance XML uložené v různých sloupcích typu XML v databázi AdventureWorks.
A. Použití funkce contains() XQuery k vyhledání konkrétního znakového řetězce
Následující dotaz najde produkty, které obsahují slovo Aerodynmika v souhrnných popisech. Dotaz vrátí IDproduktu a prvek <Summary
> pro tyto produkty.
--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
Výsledky
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>
Viz také
funkce XQuery proti datového typu XML