INSTRB |
Dans la chaîne en octet |
|---|---|
| Oracle Database SQL | Oracle 7 ou supérieure |
Syntaxe
| instrb(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 en octet d'une sous-chaîne de caractères contenu dans une chaîne de caractères et 0 si elle ne s'y trouve pas.
Remarques
- Différence avec INSTR : unité utilisée : La fonction INSTRB se distingue de INSTR par l'unité qu'elle utilise pour mesurer les positions : elle retourne la position en nombre d'octets, et non en nombre de caractères. Cette distinction devient essentielle pour les ensembles de caractères multioctets (comme UTF-8 ou AL32UTF8).
- Utile avec les caractères multioctets : Lorsqu'on manipule des langues avec des caractères spéciaux ou asiatiques, un caractère peut occuper plusieurs octets. INSTRB permet d'identifier précisément la position binaire de sous-chaînes dans ces cas, contrairement à INSTR qui ne voit que des caractères.
- Fonction indispensable pour traitement bas niveau : Dans des traitements où la gestion binaire ou bas niveau des chaînes est requise (par exemple, encodage, transmission de paquets, manipulation brute de texte), INSTRB est très utile pour obtenir une localisation précise au niveau des octets.
- Compatible avec les fonctions SUBSTRB et LENGTHB : INSTRB est souvent utilisé en combinaison avec SUBSTRB et LENGTHB, respectant également l'unité d'octet. Cela permet une cohérence dans les manipulations binaires ou dans les systèmes ayant des contraintes de taille binaire.
- Prend en charge les paramètres facultatifs comme INSTR : Comme INSTR, la fonction accepte quatre paramètres : chaîne source, chaîne recherchée, position de départ et occurrence. Cela permet une grande flexibilité dans les recherches répétées ou conditionnelles à travers les octets.
- Position de départ négative acceptée : Si le paramètre start_position est négatif, la recherche commence à partir de la fin de la chaîne, en remontant vers le début. Cela permet des recherches inversées, utiles notamment pour localiser une dernière occurrence.
- Retourne 0 si la sous-chaîne n'est pas trouvée : En cas d'échec dans la recherche (chaîne cible absente), la fonction renvoie 0, ce qui facilite les vérifications conditionnelles ou les filtrages dans des requêtes complexes SQL.
- Performances optimales sur les colonnes RAW ou BLOB converties : Dans le cadre de données de type RAW ou BLOB converties en texte, INSTRB peut offrir de meilleures performances que INSTR car elle agit directement au niveau binaire, sans passer par l'analyse sémantique des caractères.
- Peut produire des résultats surprenants en UTF-8 : Si vous utilisez des caractères spéciaux dans un environnement UTF-8 (par exemple é, ç,...), la position retournée par INSTRB peut sembler inattendue car elle reflète la position en octets et non en symboles lisibles.
- Essentielle pour les systèmes à contrainte de taille fixe : Dans des systèmes embarqués, des protocoles réseaux, ou des formats d'échange rigides où la taille en octets est critique, INSTRB aide à localiser et à manipuler des données avec une précision conforme au standard du système.
- Insensible aux différences de casse sans clause spécifique : Comme INSTR, la fonction INSTRB effectue une recherche sensible à la casse, sauf si elle est combinée avec des fonctions de conversion (UPPER, LOWER) pour normaliser les chaînes avant la comparaison.
- Documentation claire mais souvent négligée : Bien que INSTRB soit documentée dans les guides Oracle, elle est moins connue que INSTR. Pourtant, son usage est fondamental dans les cas où l'encodage et le format exact des chaînes doivent être pris en compte avec rigueur.
Voir également
Article - Les géants de l'informatique - Oracle
Dernière mise à jour : Lundi, le 11 mai 2015