Fonction SEARCH
Retourne la position à laquelle un caractère ou une chaîne de texte spécifique est trouvé pour la première fois, en allant de gauche à droite. La recherche ne respecte pas la casse mais respecte les accents.
Syntaxe
SEARCH(<find_text>, <within_text>[, [<start_num>][, <NotFoundValue>]])
Paramètres
Terme |
Définition |
---|---|
find_text |
Texte que vous souhaitez rechercher. Vous pouvez utiliser les caractères génériques (le point d'interrogation (?) et l'astérisque (*)) dans find_text. Un point d'interrogation représente n'importe quel caractère unique ; un astérisque correspond à n'importe quelle séquence de caractères. Si vous souhaitez rechercher un point d'interrogation ou un astérisque réel, tapez le tilde (~) avant le caractère. |
within_text |
Texte dans lequel vous souhaitez rechercher find_text, ou une colonne contenant le texte. |
start_num |
Position de caractère dans within_text au niveau de laquelle vous souhaitez commencer la recherche (facultatif). En l'absence de spécification, il s'agit de la valeur 1. |
NotFoundValue |
Valeur qui doit être retournée lorsque l'opération ne trouve pas une sous-chaîne correspondante, en principe 0, -1, ou BLANK () (facultatif). |
Valeur de retour
Numéro de la position de départ de la première chaîne de texte à partir du premier caractère de la deuxième chaîne de texte.
Notes
La fonction de recherche respecte la casse. Si vous recherchez « N », vous allez obtenir la première occurrence de « N » ou « n ».
La fonction de recherche respecte les accents. Si vous recherchez « á » vous allez obtenir la première occurrence de « á », mais pas les occurrences de « a », « à », ni la version en majuscules « A », « Á ».
Cette fonction vous permet de localiser une chaîne de texte dans une seconde chaîne de texte et de retourner la position de départ de la première chaîne de texte.
Vous pouvez utiliser la fonction SEARCH pour déterminer l'emplacement d'un caractère ou d'une chaîne de texte dans une autre chaîne de texte, puis utiliser la fonction MID pour retourner le texte ou utiliser la fonction REPLACE pour modifier le texte.
Si find_text est introuvable dans within_text, la formule retourne une erreur. Ce comportement est identique à celui d'Excel, qui retourne #VALEUR si la sous-chaîne est introuvable. Les valeurs Null dans within_text seront interprétées comme une chaîne vide dans ce contexte.
Cette fonction DAX peut retourner des résultats différents lorsqu'elle est utilisée dans un modèle déployé puis interrogé en mode DirectQuery. Pour plus d'informations sur les différences sémantiques en mode DirectQuery, consultez https://go.microsoft.com/fwlink/?LinkId=219171.
Exemple : recherche dans une chaîne
Description
La formule ci-dessous recherche la position de la lettre « n » dans le mot « printer ».
Code
=SEARCH("n","printer")
Commentaires
La formule retourne 4 car « n » est le quatrième caractère dans le mot « printer ».
Exemple : recherche dans une colonne
Description
Vous pouvez utiliser une référence de colonne comme argument de SEARCH. La formule suivante recherche la position du caractère « - » (trait d'union) dans la colonne, [PostalCode].
Code
=SEARCH("-",[PostalCode])
Commentaires
Le résultat obtenu est une colonne de nombres, qui indiquent la position d'index du trait d'union.
Exemple : gestion d'erreurs avec SEARCH
Description
La formule de l'exemple précédent échoue si la chaîne recherchée est introuvable dans chaque ligne de la colonne source. Par conséquent, l'exemple suivant montre comment utiliser IFERROR avec la fonction SEARCH, pour faire en sorte qu'un résultat valide soit retourné pour chaque ligne.
La formule suivante recherche la position du caractère « - » dans la colonne et retourne -1 si la chaîne est introuvable.
Code
= IFERROR(SEARCH("-",[PostalCode]),-1)
Commentaires
Notez que le type de données de la valeur que vous utilisez comme sortie d'erreur doit correspondre au type de données du type de la sortie sans erreur. Dans ce cas, vous indiquez une valeur numérique à fournir en sortie en cas d'erreur, car SEARCH retourne une valeur entière.
Toutefois, vous pouvez aussi retourner un espace (chaîne vide) en utilisant BLANK() comme deuxième argument d'IFERROR.