Maison > base de données > tutoriel mysql > Comment diviser une chaîne dans Oracle SQL en fonction de l'occurrence la plus éloignée d'un délimiteur ?

Comment diviser une chaîne dans Oracle SQL en fonction de l'occurrence la plus éloignée d'un délimiteur ?

Susan Sarandon
Libérer: 2025-01-05 18:10:39
original
974 Les gens l'ont consulté

How to Split a String in Oracle SQL Based on the Furthest Occurrence of a Delimiter?

Diviser une chaîne par position de délimiteur à l'aide d'Oracle SQL

Une tâche courante lorsque l'on travaille avec des chaînes consiste à les diviser en segments plus petits en fonction d'un délimiteur spécifique. Cependant, lorsque la position du délimiteur varie au sein d'une chaîne, le fractionnement devient plus complexe.

Énoncé du problème

Supposons que vous ayez une chaîne comme "F/P/O" et souhaitez le diviser par l'occurrence la plus éloignée du délimiteur "/". Le résultat souhaité est de séparer la chaîne en deux parties : "F/P" et "O".

Tentative initiale

L'instruction SQL suivante tente de diviser la chaîne chaîne à l'aide des fonctions SUBSTR et INSTR :

SELECT Substr('F/P/O', 1, Instr('F/P/O', '/') - 1) part1, 
       Substr('F/P/O', Instr('F/P/O', '/') + 1)    part2 
FROM   dual
Copier après la connexion

Cependant, cette requête produit un résultat inattendu, divisant la chaîne en "F" et "/P/O."

Résolution

Le problème réside dans l'utilisation de la fonction INSTR. Par défaut, INSTR recherche la première occurrence du délimiteur, pas la plus éloignée. Pour trouver le délimiteur le plus éloigné, la fonction INSTR doit être modifiée pour rechercher à partir de la fin de la chaîne :

SELECT SUBSTR(str, 1, Instr(str, '/', -1, 1) -1) part1,
         SUBSTR(str, Instr(str, '/', -1, 1) +1) part2
FROM DATA
Copier après la connexion

En démarrant la recherche par la fin (indiquée par la position négative start_position -1), la fonction INSTR localise la dernière occurrence du délimiteur et divise la chaîne en conséquence en « F/P » et « O ». Cette approche garantit que même lorsqu'il y a plusieurs délimiteurs dans la chaîne, la division se produit à la position la plus éloignée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal