Compartilhar via


Função contains (XQuery)

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

Sintaxe

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

Argumentos

  • $arg1
    Valor da cadeia de caracteres para testar.

  • $arg2
    Subcadeia de caracteres a ser procurada.

Comentários

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

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

A função contains() usa o agrupamento 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 $arg2 tem que 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, True ou False. O SQL Server não gera erros dinâmicos em expressões XQuery.

Para obter comparações sem diferenciação de maiúsculas e minúsculas, use a função upper-case ou lower-case.

Exemplos

Este tópico fornece exemplos de XQuery em instâncias XML armazenadas em várias colunas do tipo xml-no banco de dados AdventureWorks2008R2. Para obter uma visão geral de cada uma dessas colunas, consulte Representação de tipo de dados xml no banco de dados do AdventureWorks2008R2.

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 elemento <Summary> para tais 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 AdventureWorks2008R2;
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

Resultado de ProductModelID

-------------- ---------

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

Uma VERDADEIRA bicicleta para vários esportes que proporciona pedaladas aerodinâmicas e

tem um design revolucionário. O design aerodinâmico permite que você pedale com

os profissionais, e as engrenagens vão ajudá-lo a vencer percursos montanhosos.</p1:p>

</pd:Summary>

</Prod>

Consulte também

Referência