Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Aby wyodrębnić określone ciągi z podanego ciągu w 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)

Używanie SUBSTR(string, start, length) mamy następujące argumenty:

Dla A:

  • ciąg do przeszukania
  • 1 jako start i
  • (index_of_the_first_hyphen - 1) jako length . INSTR(string, searchfor) daje nam indeks pierwszego łącznika

Dla B:

Używanie SUBSTR(string, start) mamy argumenty:

  • ciąg do przeszukania
  • (index_of_last_hyphen + 1) - tym razem używamy dodatkowego INSTR(string, searchfor, startindex) argument startindex i ustaw go na -1; to sprawia, że ​​szuka od końca ciągu i działa wstecz, dając nam indeks ostatniego łącznika

Nie potrzebujemy argumentu długości — SUBSTR bez długości zwraca resztę ciągu na koniec

Należy zauważyć, że INSTR z indeksem początkowym równym -1 przeszukuje wstecz, ale zawsze zwraca indeks od początku ciągu, a nie od końca.

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. Usuń z dołączeniem w Oracle sql Query

  2. Określić, czy data Oracle jest w weekend?

  3. Jak przenieść plik zrzutu Oracle do instancji AWS RDS?

  4. Jak mogę zwrócić wiele identycznych wierszy na podstawie pola ilości w samym wierszu?

  5. Oświadczenie ORACLE IIF