Função SUBSTR( )

Retorna uma subcadeia especificada de uma cadeia.

Sintaxe

SUBSTR(cadeia; início; comprimento)

Parâmetros

Nome Tipo Descrição
cadeia caractere

O campo, expressão ou valor literal do qual deve ser extraída a subcadeia.

início numérico

A posição de caractere inicial da subcadeia.

As posições numéricas dos caracteres na cadeia começam em 1. Para extrair uma subcadeia começando com C na cadeia ABCDEF, você especificaria um valor de início de 3.

comprimento numérico

O número de caracteres na subcadeia.

Se o comprimento for 0, a saída será em branco.

Saída

Caractere.

Exemplos

Exemplos básicos

Entrada de caracteres literais

Retorna "BCD":

SUBSTR("ABCDEF"; 2; 3)

Retorna "EF":

SUBSTR("ABCDEF"; 5; 10)

Análise de dados de caracteres estruturados

Retorna "189543":

SUBSTR("***189543***"; 4; 6)

Retorna o ano de quatro dígitos de um campo de caracteres contendo datas formatadas como "MM/DD/AAAA":

SUBSTR(DATE; 7; 4)

Exemplos avançados

Aumento do comprimento do campo

Use SUBSTR( ) para aumentar o comprimento de um campo de caracteres. O aumento do comprimento de um campo é uma tarefa normal de harmonização que pode ser necessária antes de associar ou anexar dois campos.

O exemplo abaixo preenche o campo Descrição_Produto com espaços em branco para criar o campo calculado Descrição_Produto_Longa com um comprimento de 50 caracteres.

DEFINE FIELD Descrição_Produto_Longa COMPUTED SUBSTR(Descrição_Produto; 1; 50)

Observações

Como funciona?

A função SUBSTR( ) retorna caracteres do valor cadeia a partir da posição de caractere especificada por início. O número de caracteres retornados é especificado pelo comprimento.

Como a função SUBSTR( ) processa espaços

Os espaços à esquerda, à direita ou internos no valor da cadeia são tratados como caracteres. Os espaços capturados por início e comprimento são incluídos na cadeia de saída.

Como o preenchimento funciona

Se o valor do comprimento exceder o número de caracteres, incluindo brancos à direita, da posição início até o final da cadeia, a cadeia de saída poderá ou não ser preenchida com espaços à direita.

Preenchido com espaços

Se usar SUBSTR( ) em um comando que cria um campo, a saída é preenchida com espaços.

Preenchimento ao criar um campo calculado

Cria o campo calculado Descrição_Produto_Longa com um comprimento de 50 caracteres e baseado no campo físico Descrição_Produto, que tem 24 caracteres:

DEFINE FIELD Descrição_Produto_Longa COMPUTED SUBSTR(Descrição_Produto; 1; 50)

Preenchimento ao extrair um campo físico

Extrai Descrição_Produto_Longa com um comprimento de 50 caracteres para uma nova tabela com base no campo físico Descrição_Produto, que tem 24 caracteres:

EXTRACT FIELDS SUBSTR(Descrição_Produto; 1; 50) AS "Descrição_Produto_Longa" TO Nova_Tabela

Não preenchido com espaços

Se usar SUBSTR( ) em uma definição de variável ou expressão, a saída não é preenchida com espaços.

Sem preenchimento ao definir uma variável

Cria a variável v_desc_prod com um comprimento de 24 caracteres, baseado no comprimento do campo Descrição_Produto:

ASSIGN v_desc_prod = SUBSTR(Descrição_Produto; 1; 50)

Nota

Mesmo que SUBSTR( ) especifique um comprimento de 50 caracteres, a saída será limitada ao comprimento do campo Descrição_Produto.

Funções relacionadas

SUBSTR( ) e SPLIT( ) retornam um segmento de dados de uma cadeia de origem maior.

  • SPLIT( ) identifica o segmento de acordo com uma posição de caractere numérica.
  • SPLIT( ) identifica o segmento de acordo com um caractere separador.