sql >> Database >  >> RDS >> Oracle

String splitsen op positie van scheidingsteken met behulp van Oracle SQL

Daarom wil ik de string scheiden door het verste scheidingsteken.

Ik weet dat dit een oude vraag is, maar dit is een eenvoudige vereiste waarvoor SUBSTR en INSTR zou volstaan. REGEXP zijn nog steeds langzamer en CPU-intensief bewerkingen dan de oude functies subtsr en instr.

SQL> WITH DATA AS
  2    ( SELECT 'F/P/O' str FROM dual
  3    )
  4  SELECT SUBSTR(str, 1, Instr(str, '/', -1, 1) -1) part1,
  5         SUBSTR(str, Instr(str, '/', -1, 1) +1) part2
  6  FROM DATA
  7  /

PART1 PART2
----- -----
F/P   O

Zoals je zei, wil je de verste scheidingsteken, zou dit het eerste scheidingsteken van het omgekeerde . betekenen .

Je nadering was prima, maar je miste de start_position in INSTR . Als de startpositie negatief . is , de INSTR functie telt start_positie aantal tekens terug vanaf het einde van de tekenreeks en zoekt vervolgens naar het begin van de tekenreeks.



  1. Hoe praat Access met ODBC-gegevensbronnen? Deel 2

  2. Algemene zoekopdracht opslaan als kolom?

  3. Werken met Java-gegevens in Sisense

  4. Correct volgehouden berekende kolommen