Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Um die spezifischen Zeichenfolgen aus der angegebenen Zeichenfolge in Oracle zu extrahieren

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)

Mit SUBSTR(string, start, length) wir haben die folgenden Argumente:

Für A:

  • die zu suchende Zeichenfolge
  • 1 als start und
  • (index_of_the_first_hyphen - 1) als length . INSTR(string, searchfor) gibt uns den Index des ersten Bindestrichs

Für B:

Mit SUBSTR(string, start) wir haben Argumente:

  • die zu suchende Zeichenfolge
  • the (index_of_last_hyphen + 1) - diesmal verwenden wir den zusätzlichen INSTR(string, searchfor, startindex) Argument startindex und setze es auf -1; Dadurch wird vom Ende der Zeichenfolge an gesucht und rückwärts gearbeitet, wodurch wir den Index des letzten Bindestrichs erhalten

Wir brauchen kein Längenargument - SUBSTR ohne Länge gibt den Rest des Strings bis zum Ende zurück

Es ist wichtig zu beachten, dass INSTR mit einem Startindex von -1 rückwärts sucht, aber immer den Index vom Anfang der Zeichenfolge zurückgibt, nicht vom Ende.

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