Compartir a través de


contains (función de XQuery)

Devuelve un valor de tipo xs:boolean que indica si el valor de $arg1 contiene un valor de cadena especificado por $arg2.

Sintaxis

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

Argumentos

  • $arg1
    Valor de cadena que se va a comprobar.

  • $arg2
    Subcadena que se va a buscar.

Comentarios

Si el valor de $arg2 es una cadena de longitud cero, la función devuelve True. Si el valor de $arg1 es una cadena de longitud cero y el valor de $arg2 no lo es, la función devuelve False.

Si el valor de $arg1 o $arg2 es una secuencia vacía, el argumento se trata como una cadena de longitud cero.

La función contains() usa la intercalación de punto de código Unicode predeterminada de XQuery para la comparación de cadenas.

El valor de subcadena especificado para $arg2 debe ser menor o igual que 4000 caracteres. Si el valor especificado tiene más de 4.000 caracteres, se produce una condición de error dinámica y la función contains() devuelve una secuencia vacía en lugar del valor booleano True o False. SQL Server no genera errores dinámicos en expresiones XQuery.

Para obtener las comparaciones sin distinción entre mayúsculas y minúsculas, se pueden usar las funciones en mayúsculas o minúsculas.

Caracteres adicionales (pares suplentes)

El comportamiento de pares suplentes en las funciones XQuery depende del nivel de compatibilidad de la base de datos y, en algunos casos, del URI del espacio de nombres predeterminado de las funciones. Para obtener más información, vea la sección "Las funciones de XQuery detectan los caracteres suplentes" en el tema Cambios recientes en las características del Motor de base de datos de SQL Server 2012. Consulte también Nivel de compatibilidad de ALTER DATABASE (Transact-SQL) y Compatibilidad con la intercalación y Unicode.

Ejemplos

En este tema se ofrecen ejemplos de consultas XQuery con instancias XML almacenadas en varias columnas de tipoxml en la base de datos AdventureWorks.

A.Utilizar la función contains() de XQuery para buscar una cadena de caracteres específica

La consulta siguiente busca los productos que contengan la palabra Aerodynamic en las descripciones resumidas. La consulta devuelve el Id. de producto (ProductID) y el elemento <Summary> de esos productos.

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

Resultado

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>

Vea también

Referencia

Funciones de XQuery con el tipo de datos xml