Partilhar via


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

Aplica-se: 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 no $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 substring 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 reconhecem substitutos" no tópico Alterações significativas nos recursos do Mecanismo de Banco de Dados no SQL Server 2016. Consulte também Nível de compatibilidade ALTER DATABASE (Transact-SQL) e Suporte a ordenação e Unicode.

Limitações de implementação

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

O 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 de XQuery em relação a instâncias XML armazenadas em várias colunas de tipo xml no AdventureWorks2022 banco de dados.

R. 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 string do<Summary> elemento. Essa função é usada porque 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 string recuperado pela string().

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

Confira também

Funções XQuery em Tipos de Dados XML