Funciones usadas en valores de cadena: substring

Se aplica a: síSQL Server (todas las versiones admitidas)

Devuelve parte del valor de $sourceString, comenzando en la posición indicada por el valor de $startingLoc y continúa para el número de caracteres indicado por el valor de $length.

Sintaxis

  
fn:substring($sourceString as xs:string?,  
                          $startingLoc as xs:decimal?) as xs:string?  
  
fn:substring($sourceString as xs:string?,  
                          $startingLoc as xs:decimal?,  
                          $length as xs:decimal?) as xs:string?  

Argumentos

$sourceString
Cadena de origen.

$startingLoc
Punto inicial de la cadena de origen donde comienza la subcadena. Si este valor es negativo o es 0, solo se devuelven los caracteres en posiciones mayores que cero. Si es mayor que la longitud de la $sourceString, se devuelve la cadena de longitud cero.

$length
[opcional] Número de caracteres que se va a recuperar. Si no se especifica, devuelve todos los caracteres de la ubicación especificada en $startingLoc hasta el final de la cadena.

Observaciones

La versión de la función con tres argumentos devuelve los caracteres de $sourceString cuya posición $p sea:

fn:round($startingLoc) <= $p < fn:round($startingLoc) + fn:round($length)

El valor de $length puede ser mayor que el número de caracteres del valor de $sourceString después de la posición inicial. En este caso, la subcadena devuelve los caracteres hasta el final de $sourceString.

El primer carácter de una cadena se encuentra en la posición 1.

Si el valor de $sourceString es la secuencia vacía, se trata como la cadena de longitud cero. De lo contrario, si $startingLoc o $length es la secuencia vacía, se devuelve la secuencia vacía.

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 XQuery son compatibles con suplentes" en el tema cambios importantes en las características de motor de base de datos en SQL Server 2016. Vea también el nivel de compatibilidad de Alter database (Transact-SQL) y la Intercalación y compatibilidad con Unicode.

Limitaciones de la implementación

SQL Server requiere que los parámetros $startingLoc y $length sean de tipo XS: decimal en lugar de XS: Double.

SQL Server permite que $startingLoc y $length sean una secuencia vacía, porque la secuencia vacía es un valor posible como resultado de la asignación de errores dinámicos a ().

Ejemplos

En este tema se proporcionan ejemplos de XQuery con instancias XML almacenadas en varias columnas de tipo XML de la AdventureWorks2012 base de datos.

A. Utilizar la función substring() de XQuery para recuperar descripciones resumidas parciales de modelos de productos

La consulta recupera los primeros 50 caracteres del texto que describe el modelo de producto, el elemento <Summary> del documento.

WITH XMLNAMESPACES ('https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS pd)  
SELECT ProductModelID, CatalogDescription.query('  
    <Prod>{ substring(string((/pd:ProductDescription/pd:Summary)[1]), 1, 50) }</Prod>  
 ') as Result  
FROM Production.ProductModel  
where CatalogDescription.exist('/pd:ProductDescription')  = 1;  

Observe lo siguiente en la consulta anterior:

  • La función String () devuelve el valor de cadena del Summary elemento<>. Esta función se usa, porque el Summary elemento <> contiene el texto y los subelementos (elementos de formato HTML), y dado que se omitirán estos elementos y se recuperará todo el texto.

  • La función substring () recupera los primeros 50 caracteres del valor de cadena recuperado por la cadena ().

Éste es un resultado parcial:

ProductModelID Result  
-------------- ----------------------------------------------------  
19      <Prod>Our top-of-the-line competition mountain bike.</Prod>   
23      <Prod>Suitable for any type of riding, on or off-roa</Prod>  
...  

Consulte también

Funciones de XQuery con el tipo de datos xml