2016-09-13 1 views
2

Ich bin neu bei SQL und ich habe versucht, das Arbeiten mit Oracle Database zu üben.In Oracle Database, wie extrahieren Sie Text zwischen Zeichen? (SQL)

Während ich an einer Aktivität arbeitete, stieß ich auf eine, die mich verwirrte - ich versuche, bestimmten Text aus dazwischenliegenden Zeichen zu extrahieren. Die spezifische Aktivität, die ich kann nicht, diese Funktionen scheint, um herauszufinden ist:

Für Tabelle namens Benutzer in der Spalte E-Mails, genannt nur die E-Mail-Domäne extrahiert (das heißt, der Text in-zwischen @ und.), so dass die vollständige E-Mail-Adressen:

Wird eine neue Spalte Domains mit den Werten genannt:

  • yahoo
  • aol
  • Ausblick

Ich habe bisher nur in der Lage gewesen, Code zu schreiben, der nur den Benutzernamen Isolaten zu:

  • mjane
  • jdoe
  • jbarry

diesen Code verwenden:

`select rtrim(Emails,substr(Emails,instr(Emails,'@'))) 
    from StudentEmails;` 

Jede Hilfe geschätzt extrem würde! Ich habe mir stundenlang den Kopf darüber gekratzt! Vielen Dank!!!

Antwort

0
SELECT SUBSTR(Emails, 
       INSTR(Emails, '@') + 1, 
       INSTR(Emails, '.') - INSTR(Emails, '@') - 1) AS Domains 
FROM Users 

Caveat:

Ich gehe davon aus, dass E-Mails haben als einzelner Punkt den Domain-Namen von Domänentyp Trennen (z.B. com, net). Wenn Sie eine E-Mail wie [email protected] hätten, würde die obige Abfrage domain als Domäne zurückgeben.

+1

Sie sind erstaunlich! Es funktionierte wie ein Zauber - ich kann nicht glauben, dass nur 4 Zeilen Code mich stundenlang im Kreis herumlaufen ließen, haha! Klar muss ich viel lernen - vielen Dank !! – Art

0

Reguläre Ausdrücke wäre ein weiterer Weg zu gehen:

select substr(regexp_substr(emails,'@[^.]+'),2) domains from users; 
Verwandte Themen