sql >> Database teknologi >  >> RDS >> Oracle

Opdel streng efter skilletegnsposition ved hjælp af oracle SQL

Derfor vil jeg gerne adskille strengen med den længste afgrænsning.

Jeg ved, at dette er et gammelt spørgsmål, men dette er et simpelt krav, som SUBSTR for og INSTR ville være tilstrækkeligt. REGEXP er stadig langsommere og CPU-intensive operationer end de gamle subtsr og instr funktioner.

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 sagde, vil du have det længst skilletegn, ville det betyde den første afgrænsning fra omvendt .

Din tilgang var fin, men du manglede startpositionen i INSTR . Hvis start_positionen er negativ , INSTR funktionen tæller start_position antallet af tegn tilbage fra slutningen af ​​strengen og søger derefter mod begyndelsen af ​​strengen.



  1. MariaDB LAST_INSERT_ID() Forklaret

  2. datetime til totalminute i sql

  3. Heroku-databasegendannelsesproblem

  4. Returner alle deaktiverede begrænsninger i SQL Server (T-SQL-eksempel)