Renvoie une valeur logique indiquant si une chaîne de caractères correspond à une chaîne au format spécifié avec des caractères génériques, des caractères littéraux ou les deux.

MAP(chaîne_de_caractères; format)
Nom Type Description
chaîne

caractère

Le champ, l'expression, ou la valeur littérale à tester pour les rapprochements.
format

caractère

Le modèle de données, ou la chaîne de caractères, que vous souhaitez comparer avec la chaîne.

Le format peut contenir des caractères génériques, des caractères littéraux ou une combinaison des deux.

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

Les caractères génériques suivants sont pris en charge :

  • "X" : permet de comparer tous les caractères alphabétiques (a-z, A-Z, caractères européens). Ce caractère générique n'est pas sensible à la casse. Vous pouvez utiliser "X" ou "x"
  • "9" : permet de comparer tous les nombres (0-9).
  • "!" : permet de comparer tous les caractères non vides.
  • "?" : permet de comparer tous les caractères, y compris les caractères vides.
  • "\" : caractère d'échappement permettant d'indiquer que le caractère suivant immédiatement est un caractère littéral. Utilisez le caractère d'échappement si vous souhaitez faire correspondre littéralement l'un des caractères génériques (X, x, 9, !, ?)
  • "\\" : indique un antislash littéral

Logique. Renvoie T (« true », vrai) si une correspondance est trouvée ; renvoie F (« false », faux) dans les autres cas.

Exemples de base

Modèles de recherche simples

Renvoie T :

MAP("ABC Plumbing"; "xxx")

Renvoie F (chaîne comporte uniquement 3 chiffres alors qu'un minimum de 4 chiffres est requis) :

MAP("045"; "9999")

Échappement d'un caractère générique

Si l'objectif consiste à renvoyer T uniquement pour les valeurs commençant par le caractère littéral « X » suivi d'une deuxième lettre, le paramètre format "\XX" s'assure que le premier « X » du paramètre est interprété littéralement et non comme un caractère générique.

Renvoie T :

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

Renvoie F :

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

Champs et modèles

Renvoie T pour tous les enregistrements dont les numéros de factures se composent de deux lettres suivies de cinq chiffres ou bien commencent par deux lettres suivies de cinq chiffres. Renvoie F autrement :

MAP(No_Facture; "XX99999")

Renvoie T pour tous les enregistrements comportant les numéros de facture "AB12345" ou pour tous les enregistrements comportant des numéros commençant par "AB12345". Renvoie F autrement :

MAP(No_Facture; "AB12345")

Renvoie T pour tous les enregistrements dont les numéros de facture se composent de "AB" suivis de cinq chiffres ou commencent par "AB" suivies de cinq chiffres. Renvoie F autrement :

MAP(No_Facture; "AB99999")

Renvoie T pour tous les enregistrements dont le format ne correspond pas au format standard des numéros de sécurité sociale dans le champ SSN. Renvoie F autrement :

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

Exemples avancés

Extraction des enregistrements avec des codes de produits de 10 caractères et avec les caractères de tête "859-"

Utilisez une instruction IF et la fonction MAP( ) pour extraire uniquement les enregistrements dont les codes produits présentent une longueur de 10 caractères et dont les premiers chiffres sont "859-" :

EXTRACT RECORD IF MAP(Code_Produit; "85\9-999999") TO "Codes_Longs_859"

Quand utiliser la fonction MAP( )

Utilisez la fonction MAP( ) pour rechercher des modèles ou des formats particuliers parmi les données alphanumériques. Les modèles ou formats peuvent se composer de caractères génériques, de caractères littéraux ou d'une combinaison des deux.

Respect de la casse

La fonction MAP( ) respecte la casse lorsqu'elle compare deux caractères littéraux. Par exemple, « a » n'est pas équivalent à « A ».

Si chaîne_de_caractères inclut des données de caractères avec des incohérences de casse, vous pouvez utiliser la fonction UPPER( ) pour convertir les valeurs et remédier aux problèmes de casse avant de vous servir de la fonction MAP( ).

Par exemple :

MAP(UPPER(Numéro_Facture); "AB99999")

Rapprochement partiel

MAP( ) prend en charge le rapprochement partiel dans une situation mais pas dans l'autre.

Le rapprochement partiel dans la fonction MAP( ) n'est pas affecté par l'option Comparaisons exactes de caractères (SET EXACT ON/OFF).

Rapprochement partiel pris en charge

Le rapprochement partiel est pris en charge si la valeur format est plus courte que la valeur chaîne_de_caractères.

Renvoie T, car format fait 7 caractères et chaîne_de_caractères en fait 9 :

MAP("AB1234567"; "AB99999")

Remarque

Pour renvoyer vrai, la valeur format doit apparaître au début de la valeur chaîne_de_caractères.

Rapprochement partiel non pris en charge

Le rapprochement partiel n'est pas pris en charge si la valeur format est plus longue que la valeur chaîne_de_caractères.

Renvoie F, car format fait 7 caractères et chaîne_de_caractères en fait 6 :

MAP("AB1234"; "AB99999")

Si format est plus long que chaîne_de_caractères, le résultat est toujours Faux.

Traitement des espaces

Les espaces vides sont traitées comme des caractères ; elles peuvent être traitées de l'une de ces deux façons :

  • comparer des valeurs vides littéralement, en incluant des valeurs vides dans le paramètre format à la place appropriée
  • utiliser le caractère générique « ? » , qui permet de comparer tous les caractères, y compris les caractères vides.

Si besoin, vous pouvez utiliser les fonctions TRIM( ), LTRIM( ) et ALLTRIM( ) pour supprimer les espaces de fin ou de début de chaîne_de_caractères, les fonctions LTRIM( ) ou ALLTRIM( ) pour supprimer les espaces de début, dans le paramètre chaîne_de_caractères, et vous assurer que seuls les caractères de texte et les vides internes sont comparés.

Concaténation de champs

Vous pouvez concaténer deux champs ou plus dans chaîne_de_caractères si vous souhaitez que votre recherche porte sur plusieurs champs d'une table. Les champs concaténés sont traités comme un seul champ incluant les espaces de début et de fin des champs individuels sauf si vous utilisez la fonction ALLTRIM( ) pour supprimer les espaces.