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

Comment puis-je diviser une chaîne dans Oracle SQL à l'occurrence la plus éloignée d'un délimiteur ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-05 10:51:38808parcourir

How Can I Split a String in Oracle SQL at the Furthest Occurrence of a Delimiter?

Diviser les chaînes par position de délimiteur à l'aide d'Oracle SQL

Semblable à un autre article, l'exigence est de diviser une chaîne par l'occurrence la plus éloignée d'un délimiteur. La distinction clé ici est que le délimiteur n'est pas toujours la première instance, mais la plus éloignée.

Pour ce faire, les fonctions SUBSTR et INSTR peuvent être utilisées. Instr(str, '/', -1, 1) localise la position du délimiteur le plus éloigné, tandis que -1 indique de commencer la recherche de la fin de la chaîne vers le début.

Cependant, une erreur s'est produite dans l'exemple fourni en raison de l'absence de start_position dans la fonction INSTR. En ajoutant start_position = -1, la fonction INSTR trouve avec succès le délimiteur le plus éloigné et divise la chaîne en conséquence.

Voici le code modifié :

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

Cette modification garantit que le code est divisé avec précision la chaîne à la position de délimiteur souhaitée, ce qui entraîne la sortie correcte de "F/P" et "O" pour la chaîne donnée "F/P/O".

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!

Déclaration:
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