Fonction FIND( )

Renvoie une valeur logique indiquant si la chaîne indiquée est présente dans un champ particulier ou n'importe où dans un enregistrement entier.

Remarque

La fonction FIND( ) et la Commande FIND sont deux fonctionnalités Analytics distinctes présentant des différences significatives.

Syntaxe

FIND(chaîne_de_caractères <;champ_à_explorer>)

Paramètres

Nom Type Description
chaîne

caractère

Chaîne de caractères à rechercher. Cette recherche n'est pas sensible à la casse.
champ_à_explorer

optionnel

caractère

Le champ ou la variable à explorer. Si ce paramètre est ignoré, l'enregistrement entier est exploré, y compris les parties non définies de l'enregistrement.

Sortie

Logique. Renvoie T (« true », vrai) si la valeur chaîne_de_caractères indiquée est trouvée ; renvoie F (« false », faux) dans les autres cas.

Exemples

Exemples basiques

Recherche dans un enregistrement entier

Renvoie « T » pour tous les enregistrements contenant la chaîne « New York » 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 :

FIND("New York")

Rechercher dans un champ unique

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

FIND("New York"; Ville)

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

FIND("Ne"; Ville)

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

FIND(" New York"; Ville)

Renvoie T pour l'ensemble des enregistrements présentant une valeur dans le champ Description correspondant ou contenant la valeur de la variable v_terme_recherché. Renvoie F autrement :

FIND(v_terme_recherché; Description)

Rechercher dans plusieurs champs

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

FIND("New York"; Ville+Ville_2)

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

FIND("New York"; Ville) OR FIND("New York"; Ville_2)

Combinaison avec d'autres fonctions

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

FIND(ALLTRIM(Nom); Nom_2)

Remarques

Quand utiliser FIND( )

Utilisez la fonction FIND( ) pour vérifier la présence de la chaîne_de_caractères indiquée 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 le paramètre facultatif champ_à_explorer n'est pas indiqué, 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 champ_à_explorer si vous souhaitez que votre recherche porte sur un sous-ensemble de champs d'une table. Par exemple, pour rechercher la chaîne « New York » à la fois dans les champs Ville et Ville_2 :

FIND("New York"; Ville+Ville_2)

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 :

FIND("New York"; Ville) OR FIND("New York"; Ville_2)

Si 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 FIND( ) 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 champ_à_explorer. Par exemple, si Ville_fournisseur est un champ calculé qui isole la ville dans une adresse :

FIND("New York"; Ville_fournisseur)

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 champ_à_explorer :

FIND("New York"; Fournisseur.Ville_Fournisseur)

Recherche parmi des données DateHeure ou numériques

Il est possible d'utiliser la fonction FIND( ) pour effectuer des recherches parmi des données DateHeure ou numériques au niveau des enregistrements. La spécification du champ_à_explorer n'est pas prise en charge pour la recherche parmi des données DateHeure ou numériques.

La chaîne numérique ou DateHeure doit être entre guillemets et doit 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 FIND( ) 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 FIND( ) pour effectuer une recherche parmi des données DateHeure ou numériques, car sa manipulation peut être difficile.