STRPOS |
Position de la chaîne de caractères |
| BigQuery |
Syntaxe
|
STRPOS(string, substring)
|
Paramètres
| Nom |
Description |
| string |
Ce paramètre permet de spécifier la chaîne de caractères principale (STRING ou BYTES) dans laquelle vous souhaitez effectuer la recherche. |
| substring |
Ce paramètre permet de définir la sous-chaîne de caractères (STRING ou BYTES) dont vous voulez trouver la position dans la string principale. La fonction renverra la position de la première occurrence de cette sous-chaîne (basée sur 1) ou 0 si la sous-chaîne n'est pas trouvée. |
Description
Cette fonction permet de rechercher la position en base 1 d'une sous-chaîne de caractères dans une chaîne de caractères et retournera 0 si la sous-chaîne de caractères est introuvable.
Remarques
- Position basée sur 1 (et non sur 0) : Contrairement à certains langages de programmation comme C,
JavaScript ou Python, la fonction STRPOS utilise une indexation
commençant à 1, ce qui signifie que le premier caractère de la chaîne principale a la position 1. Cela peut nécessiter une adaptation si vous êtes habitué à une
indexation basée sur 0.
- Retourne 0 si la sous-chaîne est introuvable : Lorsque la sous-chaîne n'est pas trouvée dans la chaîne principale, la fonction renvoie la valeur 0. Il
ne faut donc pas confondre ce résultat avec une erreur ou une valeur invalide : c'est simplement l'indication qu'il n'y a aucune correspondance.
- Utile pour valider la présence d'un motif simple : STRPOS permet de vérifier la présence ou l'absence d'un mot ou caractère, sans utiliser d'expression
régulière. Par exemple, STRPOS(nom, "Jean") > 0 peut servir à filtrer les enregistrements contenant ce prénom.
- Compatible avec les chaînes de type STRING ou BYTES : La fonction peut être utilisée sur des chaînes de caractères (texte) mais aussi sur des séquences
d'octets, ce qui permet une certaine flexibilité dans le traitement de données brutes ou encodées.
- N'identifie que la première occurrence : Si la sous-chaîne recherchée est présente plusieurs fois, seule la position de la première apparition est
renvoyée. Pour trouver toutes les positions, il faudra soit utiliser une autre fonction comme REGEXP_EXTRACT_ALL, soit passer par une logique de traitement plus
complexe.
- Insensible à la casse uniquement si on le prépare : STRPOS est sensible à la casse (distinction entre majuscules et minuscules). Si l'on veut effectuer
une recherche insensible à la casse, il faut convertir les deux chaînes avec LOWER() ou UPPER() avant la comparaison.
- Peut être combinée avec SUBSTR pour l'extraction : Une utilisation courante de STRPOS consiste à déterminer où commence un segment d'intérêt, puis à
utiliser SUBSTR() pour l'extraire. Par exemple, pour obtenir ce qui suit un caractère spécifique dans une chaîne (comme après "@"), on combine STRPOS et
SUBSTR.
- Ne fonctionne pas avec des expressions régulières : Contrairement à REGEXP_CONTAINS ou
REGEXP_EXTRACT, STRPOS ne permet pas de rechercher des motifs complexes. Elle est donc à privilégier pour des recherches
simples de sous-chaînes fixes, mais pas pour des motifs dynamiques ou des modèles variables.
Dernière mise à jour : Jeudi, le 18 Juin 2020