Partilhar via


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

Aplica-se: 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 da subcadeia de caracteres especificado para $arg 2 deve ser menor ou igual a 4000 caracteres. Se o valor especificado for maior que 4000 caracteres, ocorrerá uma condição de erro dinâmico e a função contains() retornará uma sequência vazia em vez de um valor booleano de True ou False. O 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 reconhecem substitutos" no tópico Alterações significativas nos recursos do Mecanismo de Banco de Dados no SQL Server 2016. Consulte também Nível de compatibilidade ALTER DATABASE (Transact-SQL) e Suporte a ordenação e Unicode.

Exemplos

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

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

Confira também

Funções XQuery em Tipos de Dados XML