INSTR |
Dans la chaîne |
|---|---|
| Oracle Database SQL | Oracle 6 ou supérieure |
Syntaxe
| instr(chaine1,chaine2[,start_position[,nthAppearance]]) |
Paramètres
| Nom | Description |
|---|---|
| chaine1 | Ce paramètre permet d'indiquer la chaîne de caractères contenant la source dans lequel il faudra chercher |
| chaine2 | Ce paramètre permet d'indiquer la chaîne de caractères contenant la chaîne à rechercher |
| start_position | Ce paramètre permet d'indiquer la position où doit commencer la recherche. La valeur par défaut est 1. Si la position est négative, la recherche est commence à partir de la fin de la chaine de caractères. |
| nthAppearance | Ce paramètre optionnel permet d'indiquer la Nième apparence dans le paramètre «chaine2». |
Description
Cette fonction retourne la position d'une sous-chaîne de caractères contenus dans une chaîne de caractères et 0 si elle ne s'y trouve pas.
Remarques
- Recherche d'une sous-chaîne dans une chaîne principale : La fonction INSTR permet de localiser la position d'une sous-chaîne (chaine2) dans une chaîne principale (chaine1). Elle est très utile pour repérer des motifs, des séparateurs ou des caractères spécifiques dans des champs texte, comme les adresses ou les numéros de série.
- Retourne la position du premier caractère trouvé : Lorsque la sous-chaîne est trouvée, la fonction retourne la position (1-based) du premier caractère correspondant dans chaine1. Si aucun résultat n'est trouvé, INSTR retourne 0, ce qui permet de tester facilement la présence ou l'absence d'une chaîne.
- Prend en charge la recherche à partir de la fin : Le paramètre start_position accepte une valeur négative, ce qui permet de démarrer la recherche depuis la fin de la chaîne. Cette fonctionnalité est très pratique pour trouver la dernière occurrence d'un caractère sans avoir à inverser la chaîne ou à utiliser des requêtes complexes.
- Possibilité de rechercher la Nième apparition : Le quatrième paramètre nthAppearance permet de rechercher la Nième occurrence de la sous-chaîne. Cela est utile lorsqu'un motif peut apparaître plusieurs fois, par exemple pour repérer la deuxième virgule dans une chaîne CSV ou le troisième point dans une URL.
- Sensibilité à la casse par défaut : La fonction INSTR est sensible à la casse, ce qui signifie que 'abc' et 'ABC' sont considérés comme différents. Pour effectuer une recherche insensible à la casse, il faut combiner INSTR avec des fonctions comme LOWER() ou UPPER() sur les deux chaînes à comparer.
- Adaptée à la manipulation de données semi-structurées : INSTR est particulièrement utile pour extraire ou valider des portions de chaînes dans des données semi-structurées (comme des JSON partiels, des chemins de fichiers ou des séquences de code). Elle offre un moyen rapide de repérer des délimiteurs sans passer par des expressions régulières.
- Combinable avec SUBSTR pour extractions ciblées : Souvent, INSTR est utilisé en tandem avec SUBSTR pour extraire une partie précise d'une chaîne. Par exemple, on peut utiliser INSTR pour trouver la position d'un séparateur, puis SUBSTR pour récupérer la partie avant ou après ce séparateur, ce qui permet de simuler un découpage dynamique.
- Fonction native, très performante : Comme INSTR est une fonction native du moteur SQL d'Oracle, elle est hautement optimisée et s'exécute très rapidement, même sur des millions de lignes. Elle évite l'utilisation de fonctions personnalisées ou de scripts PL/SQL pour les traitements de chaînes de base.
- Retourne 0 au lieu de NULL si la sous-chaîne n'est pas trouvée : Contrairement à certaines fonctions textuelles qui retournent NULL lorsqu'aucun résultat n'est trouvé, INSTR retourne 0, ce qui est plus pratique pour des comparaisons logiques (INSTR(...) > 0) et évite des erreurs dans les requêtes utilisant des agrégations ou des conditions.
- Peut être utilisée dans des clauses WHERE : INSTR est parfaitement intégrée dans les clauses WHERE, permettant de filtrer les lignes contenant une certaine sous-chaîne. Par exemple : WHERE INSTR(email, '@') > 0 permet de récupérer toutes les lignes contenant un email valide au format minimal.
- Utile pour les tests de format ou de structure : On peut l'utiliser pour tester si une chaîne respecte un format attendu, comme la présence d'un préfixe, d'un séparateur ou d'une extension. Par exemple : INSTR(nom_fichier, '.pdf') > 0 permet d'identifier les fichiers au format PDF stockés dans une base.
- Compatible avec les chaînes Unicode : La fonction INSTR est compatible avec les chaînes contenant des caractères Unicode, y compris les lettres accentuées, les symboles internationaux et les caractères non latins. Cela en fait une solution fiable pour les bases de données multilingues.
Voir également
Article - Les géants de l'informatique - Oracle
Dernière mise à jour : Lundi, le 11 mai 2015