Fonction FINDMULTI( )

Renvoie une valeur logique indiquant si une chaîne de caractères dans un ensemble d'une ou plusieurs chaînes de caractères spécifiée est présente dans un champ particulier ou quelque part dans un enregistrement entier.

Syntaxe

FINDMULTI({explorer|RECORD}; chaîne_1 <;...n>)

Paramètres

Nom Type Description
explorer | RECORD

caractère

Le champ ou la variable à explorer.

Indiquez le mot-clé RECORD pour explorer l'enregistrement entier, y compris les parties non définies de l'enregistrement.

Vous pouvez aussi indiquer une liste de mots-clés en concaténant des noms de champs :

Champ_1+Champ_2+Champ_3
chaîne_1 <;...n>

caractère

Une ou plusieurs chaînes de caractères à rechercher. Séparez plusieurs chaînes de recherche par des virgules :

FINDMULTI(RECORD; "Joa"; "Jim"; "Joh")

La recherche n'est pas sensible à la casse.

Sortie

Logique. Renvoie T (« true », vrai) si une ou plusieurs des valeurs chaîne_de_caractères indiquées sont trouvées ; renvoie F (« false », faux) dans les autres cas.

Exemples

Exemples basiques

Recherche dans un enregistrement entier

Renvoie T pour tous les enregistrements contenant « New York » ou « Chicago » dans n'importe quel champ, dans toutes les limites de champs et dans n'importe quelle partie non définie de l'enregistrement. Renvoie F autrement :

FINDMULTI(RECORD; "New York"; "Chicago")

Rechercher dans un champ unique

Renvoie T pour tous les enregistrements contenant « New York » ou « Chicago » dans le champ Ville. Renvoie F autrement :

FINDMULTI(Ville; "New York"; "Chicago")

Renvoie T pour tous les enregistrements contenant la chaîne « Ne » ou « Chi » dans le champ Ville. Renvoie F autrement :

FINDMULTI(Ville; "Ne"; "Chi")

Renvoie T pour tous les enregistrements contenant « New York » ou « Chicago » précédée d'une ou plusieurs espaces dans le champ Ville. Renvoie F autrement :

FINDMULTI(Ville; " New York"; " Chicago")

Renvoie T pour l'ensemble des enregistrements présentant une valeur dans le champ Description correspondant ou contenant une valeur des variables v_terme_recherché. Renvoie F dans les autres cas :

FINDMULTI(Description; v_terme_recherché_1; v_terme_recherché_2; v_terme_recherché_3)

Rechercher dans plusieurs champs

Renvoie T pour tous les enregistrements contenant la chaîne « New York » ou « Chicago » dans le champ Ville ou dans le champ Ville_2. Renvoie F autrement :

FINDMULTI(Ville+Ville_2; "New York"; "Chicago")

Renvoie T pour tous les enregistrements contenant la chaîne « New York » ou « Chicago » dans le champ Ville ou dans le champ Ville_2. Renvoie F autrement :

FINDMULTI(Ville; "New York"; "Chicago") OR FINDMULTI(Ville_2; "New York"; "Chicago")

Combinaison avec d'autres fonctions

Renvoie T pour l'ensemble des enregistrements présentant une valeur dans le champ Nom_1 correspondant ou contenant la valeur tronquée du champ Nom_2 ou Nom_3. Renvoie F autrement :

FINDMULTI(Nom_1; ALLTRIM(Nom_2); ALLTRIM(Nom_3))

Remarques

Quand utiliser FINDMULTI( )

Utilisez la fonction FINDMULTI( ) pour vérifier la présence d'une ou plusieurs chaînes de caractères indiquées dans un ou plusieurs champs ou bien dans l'intégralité d'un enregistrement.

Fonctionnement des correspondances

La valeur chaîne_de_caractères peut correspondre exactement ou bien figurer dans une chaîne plus longue. Les espaces de début dans les champs n'affectent pas la recherche sauf si vous incluez un ou plusieurs espaces de début dans la valeur chaîne_de_caractères.

Recherche dans un enregistrement entier

Si vous indiquez RECORD plutôt qu'un champ explorer, l'enregistrement entier est exploré, y compris les parties non définies de l'enregistrement. Les limites de champ sont ignorées lorsque l'intégralité de l'enregistrement est explorée et lorsque les espaces de fin dans les champs sont traités comme des caractères.

Remarque

Lorsque vous recherchez dans un enregistrement entier, c'est dans l'enregistrement physique que se passe la recherche. La recherche n'est pas effectuée dans les champs calculés et les champs associés.

Recherche dans un sous-ensemble de champs

Vous pouvez concaténer deux champs ou plus dans le paramètre explorer si vous souhaitez que votre recherche porte sur un sous-ensemble de champs d'une table. Par exemple, pour rechercher les chaînes « New York » ou « Chicago » à la fois dans les champs Ville et Ville_2 :

FINDMULTI(Ville+Ville_2; "New York"; "Chicago")

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.

Vous pouvez aussi créer une expression qui explore chaque champ individuellement :

FINDMULTI(Ville; "New York"; "Chicago") OR FINDMULTI(Ville_2; "New York"; "Chicago")

Si une valeur chaîne_de_caractères inclut une espace de début, les résultats de recherche des deux méthodes peuvent être différents.

Sensibilité de la casse et comparaison exacte des caractères

La fonction FINDMULTI( ) n'est pas sensible à la casse et permet de rechercher à la fois les caractères ASCII et EBCDIC. La fonction n'est pas affectée par l'option Comparaisons exactes de caractères (SET EXACT ON/OFF).

Recherche dans un champ calculé

Pour effectuer une recherche dans un champ calculé, vous devez indiquer le nom du champ dans explorer. Par exemple, si Ville_fournisseur est un champ calculé qui isole la ville dans une adresse :

FINDMULTI(Ville_Fournisseur; "New York"; "Chicago")

Recherche dans un champ associé

Pour effectuer une recherche dans un champ associé, vous devez indiquer le nom complet du champ (c'est-à-dire table.nom du champ) dans la valeur explorer :

FINDMULTI(Fournisseur.Ville_Fournisseur; "New York"; "Chicago")

Recherche parmi des données DateHeure ou numériques

Il est possible d'utiliser la fonction FINDMULTI( ) pour effectuer des recherches parmi des données DateHeure ou numériques au niveau des enregistrements, lorsque vous indiquez RECORD. La spécification d'un champ explorer n'est pas prise en charge pour la recherche parmi des données DateHeure ou numériques.

Les valeurs de la chaîne numérique ou DateHeure doivent être entre guillemets et doivent correspondre exactement à la mise en forme des données sources plutôt qu'à la mise en forme de la vue.

L'utilisation de la fonction FINDMULTI( ) pour effectuer une recherche parmi des données DateHeure ou numériques dans des champs calculés ou associés n'est pas prise en charge.

Remarque

Il n'est pas recommandé d'utiliser la fonction FINDMULTI( ) pour effectuer une recherche parmi des données DateHeure ou numériques, car sa manipulation peut être difficile.

Guide de création de scripts ACL 14.1