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.
Syntaxe
MAP(chaîne_de_caractères; format)
Paramètres
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 :
|
Sortie
Logique. Renvoie T (« true », vrai) si une correspondance est trouvée ; renvoie F (« false », faux) dans les autres cas.
Exemples
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"
Remarques
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.