Sdílet prostřednictvím


Funkce pro řetězcové hodnoty – obsahuje

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