sql >> Databasteknik >  >> RDS >> Oracle

Dela sträng efter avgränsningsposition med Oracle SQL

Därför skulle jag vilja separera strängen med den längsta avgränsaren.

Jag vet att detta är en gammal fråga, men det här är ett enkelt krav som SUBSTR för och INSTR skulle räcka. REGEXP är fortfarande långsammare och CPU-intensiva operationer än de gamla subtsr- och instr-funktionerna.

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

Som du sa vill du ha längst avgränsare, skulle det betyda den första avgränsaren från omvända .

Du närmade dig bra, men du saknade startpositionen i INSTR . Om startpositionen är negativ , INSTR funktionen räknar tillbaka start_position antal tecken från slutet av strängen och söker sedan mot början av strängen.



  1. Massdatakonverteringsfel (typfel överensstämmer eller ogiltigt tecken för angiven teckentabell) för rad 1, kolumn 4 (år)

  2. Hur kontrollerar jag JDK-versionen i Oracle?

  3. Automatiserad testning av uppgraderingsprocessen för MySQL/MariaDB/Percona Server

  4. Skicka värden som läses från en fil som indata till en SQL-fråga i Oracle