Partilhar 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 booliano, 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.

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 consciência de substitutos” no tópico Alterações em recursos do Mecanismo de Banco de Dados que causam interrupção no SQL Server 2012. Consulte também Nível de compatibilidade de ALTER DATABASE (Transact-SQL) e Suporte a agrupamentos e a Unicode.

Exemplos

Este tópico traz exemplos de XQuery em instâncias XML armazenadas em várias colunas do tipo xmlno 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 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

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

Referência

Funções XQuery em tipos de dados xml