Share via


Função substring (XQuery)

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

Sintaxe

fn:substring($sourceString as xs:string?,
                          $startingLoc  as 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 de $sourceString, a cadeia de caracteres de comprimento zero será retornada.

  • $length
    [opcional] Número de caracteres a recuperar. Se não especificado, retornará todos os caracteres do local especificado em $startingLoc até o fim 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 retorna os caracteres até o fim da $sourceString.

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

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

Exemplos

Este tópico fornece exemplos de XQuery em instâncias XML armazenadas em várias colunas do tipo xml no banco de dados AdventureWorks. Para obter uma visão geral de cada uma dessas colunas, consulte Representação de tipo de dados xml no banco de dados do AdventureWorks.

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 elemento <Summary> 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 elemento <Summary>. Essa função é usada, porque o elemento <Summary> contém o texto e os subelementos (html que formata elementos), 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 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>
...

Limitações de implementação

Estas são as limitações:

  • O SQL Server requer que $startingLoc e $length parameters sejam do tipo xs:decimal em vez de xs:double.

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

  • Os pares substitutos do Unicode UTF-16 são contados como dois caracteres em vez de um.

Consulte também

Referência