Oracle
 sql >> база данни >  >> RDS >> Oracle

Разделяне на низ по позиция на разделител с помощта на Oracle SQL

Затова бих искал да разделя низа с най-далечния разделител.

Знам, че това е стар въпрос, но това е просто изискване, за което SUBSTR и INSTR би било достатъчно. REGEXP все още са по-бавни и натоварващ процесор операции, отколкото старите функции subtsr и 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

Както казахте, искате най-отдалеченото разделител, това би означавало първия разделител отобратно .

Подходът ви беше наред, но ви липсваше начална_позиция вINSTR . Ако началната_позиция е отрицателна , INSTR функцията отброява обратно start_position броя знаци от края на низа и след това търси към началото на низа.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Урок за Oracle sql:Основно изявление на Sql

  2. Как да изберете подниз в Oracle SQL до конкретен символ?

  3. INSTR() Функция в Oracle

  4. MySQL 'create schema' и 'create database' - Има ли разлика

  5. Функция ROWIDTONCHAR() в Oracle