Diviser la chaîne par position de délimiteur à l'aide d'Oracle SQL
Dans les environnements de base de données, travailler avec des données de chaîne est essentiel. La possibilité de diviser une chaîne par un délimiteur à une position spécifique est souvent requise pour la manipulation et l'analyse des données. Cette question montre comment surmonter le défi de diviser une chaîne dans Oracle SQL en déterminant le délimiteur le plus éloigné.
L'exemple fourni dans la question implique de séparer la chaîne « F/P/O » en ses composants, et le le résultat souhaité est "F/P" et "O". Le problème survient lorsque la chaîne ne suit pas systématiquement le même modèle de délimiteur, car le code SQL fourni produit des résultats inattendus pour les chaînes avec un seul délimiteur.
Pour résoudre ce problème, le code SQL fourni doit être légèrement modifié. . La clé est d'identifier le délimiteur le plus éloigné de la fin de la chaîne. Ceci peut être réalisé en utilisant la fonction INSTR, qui prend une position de départ négative.
Vous trouverez ci-dessous le code SQL révisé qui divise avec succès la chaîne par le délimiteur le plus éloigné :
WITH DATA AS ( SELECT 'F/P/O' str FROM dual ) SELECT SUBSTR(str, 1, Instr(str, '/', -1, 1) -1) part1, SUBSTR(str, Instr(str, '/', -1, 1) +1) part2 FROM DATA
Dans ce code amélioré, la fonction INSTR est appelée avec une position de départ négative de -1 et un modèle de recherche de '/'. Cela garantit que la fonction commence la recherche à partir de la fin de la chaîne, en identifiant le délimiteur le plus éloigné. La division résultante est précise pour les chaînes avec plusieurs délimiteurs et celles avec un seul délimiteur, comme vous le souhaitez.
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!