Share 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 seqüê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 seqüê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 traz exemplos de XQuery em instâncias XML armazenadas em várias colunas do tipo xmlno banco de dados AdventureWorks. Para obter uma visão geral de cada uma dessas colunas, consulte Representação de tipo de dados xml no banco de dados do 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 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 AdventureWorks
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