Função MAP( )

Retorna uma valor lógico que indica se uma cadeia de caracteres corresponde a uma cadeia de formatação especificada que contém caracteres curinga, caracteres literais ou ambos.

Sintaxe

MAP(cadeia; formato)

Parâmetros

Nome Tipo Descrição
cadeia

caractere

O campo, expressão ou valor literal a ser testado por correspondência.
formato

caractere

O padrão de dados, ou cadeia de caracteres, a ser comparado com a cadeia.

formato pode conter caracteres curinga, caracteres literais ou uma combinação de ambos:

"\9\9\9-999-9999"

Os seguintes caracteres curingas são compatíveis:

  • "X" - corresponde a todos os caracteres alfabéticos (a a z, A a Z ou caracteres europeus). Esse caractere curinga não diferencia maiúsculas de minúsculas. Você pode usar "X" ou "x"
  • "9" - corresponde a todos os números (de 0 a 9)
  • "!" - corresponde a todos os caracteres que não sejam espaços
  • "?" - corresponde a todos os caracteres, incluindo espaços
  • "\" - caractere de escape que especifica que o caractere a seguir é um literal. Utilize o caractere de escape para corresponder literalmente com todos os caracteres curinga (X, x, 9, ! e ?)
  • "\\" – especifica uma barra invertida literal

Saída

Lógico. Retorna T (verdadeiro) caso uma correspondência seja encontrada ou F (falso) caso contrário.

Exemplos

Exemplos básicos

Parâmetros de pesquisa simples

Retorna T:

MAP("ABC Plumbing"; "xxx")

Retorna F (a cadeia contém só 3 números, mas são necessários 4):

MAP("045"; "9999")

Escape de curinga

Se o objetivo é retornar T somente para os valores que começam com o caractere de literal "X", seguido por qualquer segunda letra, o parâmetro formato "\XX" assegura que o primeiro "X" do parâmetro seja interpretado literalmente e não como curinga.

Retorna T:

MAP("XA-123"; "XX")
MAP("GC-123"; "XX")
MAP("XA-123"; "\XX")

Retorna F:

MAP("GC-123"; "\XX")

Campos e padrões

Retorna T para todos os registros com números de fatura que são iguais ou começam com duas letras seguidas por cinco números. Caso contrário, retorna F:

MAP(Numero_Fatura; "XX99999")

Retorna T para todos os registros com números de fatura exatamente iguais a "AB12345" ou que começam com "AB12345". Caso contrário, retorna F:

MAP(Numero_Fatura; "AB12345")

Retorna T para todos os registros com números de fatura que são iguais ou começam com "AB", seguido por cinco números. Caso contrário, retorna F:

MAP(Numero_Fatura; "AB99999")

Retorna T para todos os registros que não correspondem ao formato padrão do número de previdência social no campo SSN. Caso contrário, retorna F:

NOT MAP(SSN; "999-99-9999")

Exemplos avançados

Extraindo registros com códigos de produtos de 10 caracteres e com os caracteres à esquerda "859-"

Use uma instrução IF e a função MAP( ) para extrair apenas os registros que têm códigos de produto com no mínimo 10 caracteres e que têm os caracteres "859-" à esquerda:

EXTRACT RECORD IF MAP(Codigo_Produto; "85\9-999999") TO "Codigos_Longos_859"

Observações

Quando usar MAP( )

Use a função MAP( ) para pesquisar padrões ou formatos específicos nos dados alfanuméricos. Os padrões ou formatos podem ser compostos por caracteres curingas, caracteres literais ou uma combinação de ambos.

Diferenciação de maiúsculas e minúsculas

A função MAP( ) diferencia maiúsculas de minúsculas quando compara dois caracteres de literal. Por exemplo, "a" não equivale a "A".

Se a cadeia incluir dados de caracteres sem consistência entre maiúsculas e minúsculas, a função UPPER( ) pode ser usada para converter os valores para maiúscula/minúscula antes de usar MAP( ).

Por exemplo:

MAP(UPPER(Numero_Fatura); "AB99999")

Correspondência parcial

MAP( ) é compatível com correspondência parcial em uma situação, mas não na outra.

Correspondência parcial no MAP( ) não é afetada pela opção Comparações exatas de caractere (SET EXACT ON/OFF).

Correspondência parcial suportada

A correspondência parcial é compatível se o valor do formato for mais curto que o valor da cadeia.

Retorna T porque o formato é de 7 caracteres e a cadeia é de 9 caracteres:

MAP("AB1234567"; "AB99999")

Nota

Para retornar Verdadeiro, o valor do formato deve aparecer no início do valor da cadeia.

Correspondência parcial não compatível

A correspondência parcial não é compatível se o valor do formato for mais longo que o valor da cadeia.

Retorna F porque o formato é de 7 caracteres e a cadeia é de 6 caracteres:

MAP("AB1234"; "AB99999")

Se o formato for mais longo que a cadeia, o resultado sempre será Falso.

Contagem de espaços em branco

Os espaços em branco são tratados como caracteres e podem ser contabilizados de duas formas:

  • faça a correspondência dos brancos literalmente incluindo brancos no valor do formato na posição apropriada
  • usar curinga "?" , que corresponde a todos os caracteres, incluindo brancos

Se preciso, as funções TRIM( ), LTRIM( ) ou ALLTRIM( ) podem ser usadas para remover espaços à esquerda ou à direita da cadeia, garantindo que somente caracteres de texto e espaços internos sejam comparados.

Concatenação de campos

É possível concatenar dois ou mais campos na cadeia se quiser pesquisar em mais de um campo de uma tabela. Os campos concatenados são tratados como um único campo que inclui os brancos à esquerda e à direita de cada campo, a menos que a função ALLTRIM( ) seja usada para removê-los.

Guia de scripting do ACL 14.1