Heim >Datenbank >MySQL-Tutorial >Wie teilt man eine Zeichenfolge in Oracle SQL basierend auf dem weitesten Vorkommen eines Trennzeichens auf?

Wie teilt man eine Zeichenfolge in Oracle SQL basierend auf dem weitesten Vorkommen eines Trennzeichens auf?

Susan Sarandon
Susan SarandonOriginal
2025-01-05 18:10:39973Durchsuche

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

Aufteilen einer Zeichenfolge nach Trennzeichenposition mit Oracle SQL

Eine häufige Aufgabe bei der Arbeit mit Zeichenfolgen besteht darin, sie basierend auf a in kleinere Segmente aufzuteilen spezifisches Trennzeichen. Wenn jedoch die Trennzeichenposition innerhalb einer Zeichenfolge variiert, wird die Aufteilung komplexer.

Problemstellung

Angenommen, Sie haben eine Zeichenfolge wie „F/P/O“ und Ich möchte es durch das am weitesten entfernte Vorkommen des Trennzeichens „/“ aufteilen. Das gewünschte Ergebnis besteht darin, die Zeichenfolge in zwei Teile zu trennen: „F/P“ und „O“.

Erster Versuch

Die folgende SQL-Anweisung versucht, die Zeichenfolge zu teilen Zeichenfolge mit den Funktionen SUBSTR und 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

Diese Abfrage erzeugt jedoch ein unerwartetes Ergebnis und teilt die Zeichenfolge in „F“ und auf „/P/O.“

Auflösung

Das Problem liegt in der Verwendung der INSTR-Funktion. Standardmäßig sucht INSTR nach dem ersten Vorkommen des Trennzeichens, nicht nach dem entferntesten. Um das am weitesten entfernte Trennzeichen zu finden, sollte die INSTR-Funktion so geändert werden, dass sie vom Ende der Zeichenfolge aus sucht:

SELECT SUBSTR(str, 1, Instr(str, '/', -1, 1) -1) part1,
         SUBSTR(str, Instr(str, '/', -1, 1) +1) part2
FROM DATA

Durch Starten der Suche am Ende (angezeigt durch die negative start_position -1) kann die INSTR-Funktion Sucht das letzte Vorkommen des Trennzeichens und teilt die Zeichenfolge entsprechend in „F/P“ und „O“ auf. Dieser Ansatz stellt sicher, dass die Teilung auch bei mehreren Trennzeichen in der Zeichenfolge an der am weitesten entfernten Position erfolgt.

Das obige ist der detaillierte Inhalt vonWie teilt man eine Zeichenfolge in Oracle SQL basierend auf dem weitesten Vorkommen eines Trennzeichens auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn