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

За да извлечете конкретните низове от дадения низ в Oracle

select 
  SUBSTR(s, 1, INSTR(s, '-') - 1) as a, 
  SUBSTR(s, INSTR(s, '-', -1) + 1) as b 
from 
  (select '[email protected]@BR12340000-990' as s from dual)

Използване на SUBSTR(string, start, length) имаме следните аргументи:

За A:

  • низът за търсене
  • 1 като start и
  • (индекс_на_първото_тире - 1) като length . INSTR(string, searchfor) ни дава индекса на първото тире

За Б:

Използване на SUBSTR(string, start) имаме аргументи:

  • низът за търсене
  • (index_of_last_hyphen + 1) - този път използваме допълнителния INSTR(string, searchfor, startindex) аргумент startindex и го задайте на -1; това го кара да търси от края на низа и да работи назад, давайки ни индекса на последното тире

Нямаме нужда от аргумент за дължина - SUBSTR без дължина връща останалата част от низа до края

Важно е да се отбележи, че INSTR с начален индекс -1 търси назад, но винаги връща индекса от началото на низа, а не от края.

INSTR('dddde', 'd', -1)  
       12345            -- returns 4, because d is 4 from the start
       54321            -- it does not return 2, even though d is 2 from the "start" when searching backwards


  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 от скрипт на Excel VBA?

  2. Изпълнение на Oracle Stored Proc като друг потребител

  3. Как да се свържете с базата данни Oracle 11 от . нето

  4. ORACLE:Използване на CTE (общи таблични изрази) с PL/SQL

  5. Опции за форматиране на SQLcl (Oracle)