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; procurar_por_cadeia; no_texto)
Parâmetros
Nome | Tipo | Descrição |
---|---|---|
num_ocorrência |
numérico |
A ocorrência (instância) de procurar_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 procurar_por_cadeia. |
procurar_por_cadeia |
caractere |
A subcadeia a ser pesquisada em no_texto. Esse valor diferencia maiúsculas e minúsculas. Se procurar_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 procurar_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 procurar_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.