Funções em Valores da Cadeia de Caracteres – substring

Aplica-se a:SQL Server

Retorna parte do valor de $sourceString, começando na posição indicada pelo valor de $startingLoc e continua para o número de caracteres indicado pelo valor de $length.

Sintaxe

  
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
Cadeia de caracteres de origem.

$startingLoc
Ponto de partida na cadeia de caracteres de origem do qual a subcadeia de caracteres é iniciada. Se esse valor for negativo ou 0, apenas aqueles caracteres em posições maiores que zero serão retornados. Se for maior que o comprimento do $sourceString, a cadeia de caracteres de comprimento zero será retornada.

$length
[opcional] Número de caracteres a recuperar. Se não for especificado, ele retornará todos os caracteres do local especificado em $startingLoc até o final da cadeia de caracteres.

Comentários

A versão de três argumentos da função retorna os caracteres em $sourceString cuja posição $p obedece:

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

O valor de $length pode ser maior que o número de caracteres no valor de $sourceString após a posição inicial. Nesse caso, a subcadeia de caracteres retorna os caracteres até o final de $sourceString.

O primeiro caractere de uma cadeia de caracteres está situado na posição 1.

Se o valor de $sourceString for a sequência vazia, ele será tratado como a cadeia de caracteres de comprimento zero. Caso contrário, se $startingLoc ou $length for a sequência vazia, a sequência vazia será retornada.

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 reconhecimento alternativo" no tópico Alterações interruptivas nos recursos do Mecanismo de Banco de Dados no SQL Server 2016. Consulte também Alter DATABASE Compatibility Level (Transact-SQL) e Collation e Suporte a Unicode.

Limitações de implementação

SQL Server requer que os parâmetros$startingLoc e $length sejam do tipo xs:decimal em vez de xs:double.

SQL Server permite que $startingLoc e $length sejam a sequência vazia, pois a sequência vazia é um valor possível como resultado de erros dinâmicos sendo mapeados para ().

Exemplos

Este tópico fornece exemplos XQuery em instâncias XML armazenadas em várias colunas de tipo xml no AdventureWorks2022 banco de dados.

a. Usando uma função substring() XQuery para recuperar descrições resumidas parciais de modelos de produtos

A consulta recupera os primeiros 50 caracteres do texto que descreve o modelo de produto, o <Summary> elemento no 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 o seguinte na consulta anterior:

  • A função string() retorna o valor da cadeia de caracteres do<Summary> elemento. Essa função é usada, pois o <Summary> elemento contém o texto e os subelementos (elementos de formatação html) e porque você ignorará esses elementos e recuperará todo o texto.

  • A função substring() recupera os primeiros 50 caracteres do valor da cadeia de caracteres recuperado pela cadeia de caracteres().

Este é um 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 Também

Funções XQuery em tipos de dados xml