Fonction AT( )

Renvoie un nombre indiquant l'emplacement de début d'une occurrence spécifique d'une sous-chaîne dans une valeur de caractère.

Syntaxe

AT(num_occurrence; chaîne_recherchée; dans_texte)

Paramètres

Nom Type Description
num_occurrence

numérique

Occurrence (instance) de chaîne_recherchée dont renvoyer l'emplacement.

Par exemple, spécifiez 1 pour renvoyer l'emplacement de départ de la première occurrence de chaîne_recherchée.

chaîne_recherchée

caractère

Sous-chaîne à rechercher dans dans_texte. Cette valeur est sensible à la casse.

Si chaîne_recherchée inclut des guillemets doubles, il est nécessaire d'entourer la valeur de guillemets simples :

AT(1;'"test"'; Description)
dans_texte caractère

Valeur dans laquelle effectuer la recherche.

Vous pouvez concaténer deux champs ou plus dans le paramètre dans_texte si vous souhaitez que votre recherche porte sur plusieurs champs d'une table :

AT(1;'"test"'; Description+Résumé)

Sortie

Numérique. Renvoie la position d'octet de départ de l'occurrence indiquée pour la valeur chaîne_recherchée. Renvoie 0 si aucune correspondance n'existe.

Exemples

Exemples basiques

Occurrences trouvées

Renvoie 4 :

AT(1; "-"; "604-669-4225")

Renvoie 8 :

AT(2; "-"; "604-669-4225")

Occurrences non trouvées

Renvoie 0 parce qu'il n'y a pas de troisième trait d'union dans la chaîne.

AT(3; "-"; "604-669-4225")

Renvoie 0 parce qu'il n'y a pas de quatrième lettre "a" en minuscule dans la chaîne.

AT(4; "a"; "Alabama")

Groupes de caractères

Renvoie 5 :

AT(2; "iss"; "Mississippi")

Rechercher dans un champ

Renvoie la position d'octet du premier trait d'union dans chaque valeur du champ No_Facture :

AT(1; "-"; No_Facture)

Exemples avancés

Recherche de numéros de factures dans lesquels le deuxième trait d'union apparaît après la position du dixième octet

Vous pouvez analyser la cohérence des numéros de facture dans une table à l'aide de la fonction AT( ) pour créer un filtre comme celui ci-dessous. Ce filtre isole tous les enregistrements dans lesquels le numéro de facture contient au moins 2 traits d'union et dont le deuxième trait d'union se place après la position du dixième octet :

SET FILTER TO AT(2; "-"; No_Facture) > 10

Remarques

Quand utiliser la fonction AT( )

Utilisez cette fonction pour récupérer les positions de départ suivantes à l'intérieur d'une valeur de type caractère :

  • position de départ d'une sous-chaîne
  • position de départ d'une occurrence suivante de la sous-chaîne

Si vous souhaitez uniquement confirmer plusieurs occurrences de la même sous-chaîne dans un champ, il est conseillé d'utiliser la fonction OCCURS( ). Pour plus d'informations, consultez la section Fonction OCCURS( ).

Valeur renvoyée lorsque num_occurrence dépasse le nombre d'occurrences

Si num_occurrence est supérieure au nombre réel d'occurrences dans la sous-chaîne dans dans_texte, la fonction renvoie 0 parce que cette occurrence est introuvable dans la sous-chaîne.

Champs concaténés et valeurs renvoyées

Lorsque vous effectuez une recherche dans plusieurs champs, la valeur renvoyée pour l'instance est l'emplacement de départ de chaîne_recherchée dans tous les champs que vous spécifiez. 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.

Par exemple, si vous recherchez la première occurrence d'une chaîne dans deux champs d'une largeur de huit caractères chacun et que la chaîne est recherchée au début du deuxième champ, la valeur renvoyée est 9.

Guide de création de scripts ACL 14.1