Share via


Funções em Valores da Cadeia de Caracteres – contains

Aplica-se a:SQL Server

Retorna um valor do tipo xs:boolean indicando se o valor de $arg 1 contém um valor de cadeia de caracteres especificado por $arg 2.

Sintaxe

  
fn:contains ($arg1 as xs:string?, $arg2 as xs:string?) as xs:boolean?  

Argumentos

$arg 1
Valor da cadeia de caracteres para testar.

$arg 2
Subcadeia de caracteres a ser procurada.

Comentários

Se o valor de $arg 2 for uma cadeia de caracteres de comprimento zero, a função retornará True. Se o valor de $arg 1 for uma cadeia de caracteres de comprimento zero e o valor de $arg 2 não for uma cadeia de caracteres de comprimento zero, a função retornará False.

Se o valor de $arg 1 ou $arg 2 for a sequência vazia, o argumento será tratado como a cadeia de caracteres de comprimento zero.

A função contains() usa a ordenação de ponto de código Unicode padrão do XQuery para a comparação de cadeias de caracteres.

O valor de subcadeia de caracteres especificado para $arg 2 deve ser menor ou igual a 4.000 caracteres. Se o valor especificado for maior que 4.000 caracteres, ocorrerá uma condição de erro dinâmico e a função contains() retornará uma sequência vazia em vez de um valor booliano de True ou False. SQL Server não gera erros dinâmicos em expressões XQuery.

Para obter comparações que não diferenciam maiúsculas de minúsculas, as funções maiúsculas ou minúsculas podem ser usadas.

Caracteres suplementares (pares substitutos)

O comportamento de pares substitutos em funções XQuery depende do nível de compatibilidade do banco de dados e, em alguns casos, o URI do namespace padrão para funções. Para obter mais informações, consulte a seção "As funções XQuery têm reconhecimento alternativo" no tópico Alterações interruptivas nos recursos do mecanismo de banco de dados no SQL Server 2016. Consulte também Alter DATABASE Compatibility Level (Transact-SQL) e Collation e Unicode Support.

Exemplos

Este tópico fornece exemplos XQuery em instâncias XML armazenadas em várias colunas de tipo xml no banco de dados AdventureWorks.

a. Usando a função contains() XQuery para pesquisar uma cadeia de caracteres específica

A consulta a seguir localiza produtos que contêm a palavra Aerodynamic nas descrições resumidas. A consulta retorna o ProductID e o <Summary> elemento para esses produtos.

--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  

Resultados

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>

Consulte Também

Funções XQuery em tipos de dados xml