Função AT( )

Retorna um número especificando a localização inicial de uma determinada ocorrência de uma subcadeia dentro de um valor de caracteres.

Sintaxe

AT(num_ocorrência, pesquisar_por_cadeia, no_texto)

Parâmetros

Nome Tipo Descrição
num_ocorrência

numérico

A ocorrência (instância) de pesquisar_por_cadeia para a qual a localização deve ser retornada.

Por exemplo, especifique 1 para retornar a localização inicial da primeira ocorrência de pesquisar_por_cadeia.

pesquisar_por_cadeia

caractere

A subcadeia a ser pesquisada em no_texto. Esse valor diferencia maiúsculas e minúsculas.

Se pesquisar_por_cadeia incluir aspas, você precisa colocar o valor entre apóstrofos:

AT(1;'"teste"'; Descrição)
no_texto caractere

O valor que deve ser pesquisado.

É possível concatenar dois ou mais campos no parâmetro no_texto para pesquisar em mais de um campo de uma tabela:

AT(1;'"teste"'; Descrição+Resumo)

Saída

Numérico. Retorna a posição do byte inicial da ocorrência especificada do valor pesquisar_por_cadeia, ou 0, se nenhuma correspondência for encontrada.

Exemplos

Exemplos básicos

Ocorrências encontradas

Retorna 4:

AT(1; "-"; "604-669-4225")

Retorna 8:

AT(2; "-"; "604-669-4225")

Ocorrências não encontradas

Retorna 0, pois não existe um terceiro hífen no valor:

AT(3; "-"; "604-669-4225")

Retorna 0, pois não existe um quarto "a" minúsculo no valor:

AT(4; "a"; "Alabama")

Grupos de caracteres

Retorna 5:

AT(2; "iss"; "Mississippi")

Pesquisa por um campo

A posição de byte do primeiro hífen em cada valor no campo Número_Fatura:

AT(1; "-"; Numero_Fatura)

Exemplos avançados

Como encontrar números de fatura em que o segundo hífen ocorre após a décima posição em byte

É possível analisar a consistência de números de fatura em uma tabela usando a função AT( ) para criar um filtro como o abaixo. O filtro separa todos os registros nos quais o número da fatura contém dois ou mais hifens e o segundo hífen ocorre após a décima posição de byte:

SET FILTER TO AT(2; "-"; Número_Fatura) > 10

Observações

Quando usar AT( )

Use essa função para recuperar as seguintes posições iniciais em um valor de caractere:

  • a posição inicial de uma subcadeia
  • a posição inicial de uma ocorrência subsequente da subcadeia

Para apenas verificar por múltiplas ocorrências do mesmo trecho de cadeia em um campo, a função OCCURS( ) é uma alternativa melhor. Para obter mais informações, consulte Função OCCURS( ).

O valor de retorno quando num_ocorrência excede o número de ocorrências

Se o valor do parâmetro num_ocorrência for maior que o número de ocorrências da subcadeia em no_texto, a função retornará 0 por não conseguir encontrar essa ocorrência da subcadeia.

Campos concatenados e valores de retorno

Quando você pesquisa em mais de um campo, o valor retornado para a instância é a posição inicial de pesquisar_por_cadeia em todos os campos especificados. Os campos concatenados são tratados como um único campo que inclui os espaços à esquerda e à direita de cada campo, a menos que a função ALLTRIM( ) seja usada para remover espaços.

Por exemplo, se você pesquisar pela primeira ocorrência de uma cadeia em dois campos com uma largura de oito caracteres cada, e a cadeia for encontrada no início do segundo campo, o valor retornado será 9.