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>