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

So extrahieren Sie eine Teilzeichenfolge aus einer Zeichenfolge in Oracle/SQLite

Problem:

Sie haben eine Spalte mit Zeichenfolgen und möchten Teilzeichenfolgen daraus erhalten.

Beispiel 1:

In den emails Tabelle gibt es eine E-Mail-Spalte. Sie möchten die ersten sieben Zeichen jeder E-Mail anzeigen.

Die Tabelle sieht folgendermaßen aus:

E-Mail
[email protected]
[email protected]
[email protected]
[email protected]

Lösung 1:

SELECT
  email,
  SUBSTR(email, 1, 7) AS substring
FROM emails;

Das Ergebnis ist:

E-Mail Teilstring
[email protected] jake99@
[email protected] Tamarab
[email protected] notine@
[email protected] Jessica

Diskussion:

Verwenden Sie ein SUBSTR() Funktion. Das erste Argument ist die Zeichenfolge oder der Spaltenname. Das zweite Argument ist der Index des Zeichens, bei dem der Teilstring beginnen soll. Das dritte Argument ist die Länge des Teilstrings.

Achtung! Anders als in einigen anderen Programmiersprachen beginnen die Indizes bei 1 , nicht 0. Das bedeutet, dass das erste Zeichen den Index 1 hat, das zweite Zeichen den Index 2 usw.

>SUBSTR(email, 1, 7) gibt die Teilstrings der Werte in der E-Mail-Spalte zurück, die beim ersten Zeichen beginnen und sieben Zeichen lang sind.

Beispiel 2:

Sie möchten den Teilstring zwischen den Indizes 2 und 6 (einschließlich) anzeigen.

Lösung 2:

SELECT
  email,
  SUBSTR(email, 2, 5) AS substring
FROM emails;

Das Ergebnis ist:

E-Mail Teilstring
[email protected] ake99
[email protected] Amara
[email protected] meine
[email protected] wesentlich

Diskussion:

Sie verwenden den SUBSTR() funktionieren wie im vorigen Beispiel. Diesmal ist das zweite Argument der Funktion 2, da wir bei Index 2 beginnen wollen. Die Länge des Teilstrings ist 5 (end_index - start_index + 1 ).

Beispiel 3:

Sie möchten den Teilstring anzeigen, der mit dem @-Zeichen beginnt und am Ende des Strings endet, kennen aber die genauen Indizes oder Längen nicht.

Lösung 3:

SELECT
  email,
  SUBSTR(email, INSTR(email, '@'), LENGTH(email) - INSTR(email, '@') + 1) AS substring
FROM emails;

Das Ergebnis ist:

E-Mail Teilstring
[email protected] @googlemail.com
[email protected] @zoho.com
[email protected] @yahoo.fr
[email protected] @onet.pl

Diskussion:

Sie verwenden den SUBSTR() funktionieren genauso wie in den vorherigen Beispielen. Dieses Mal suchen Sie nach einem bestimmten Zeichen, dessen Position von Zeile zu Zeile variieren kann. Um den Index des bestimmten Zeichens zu finden, können Sie den INSTR(column, character) verwenden -Funktion, wobei Spalte die Literalzeichenfolge oder die Spalte ist, aus der Sie die Teilzeichenfolge abrufen möchten, und Zeichen das character ist an der Sie den Teilstring beginnen möchten (hier @ ).

Das dritte Argument von SUBSTR() Funktion ist die Länge der Teilzeichenfolge. Sie können es mit INSTR() berechnen und die LENGTH() Funktionen. Dazu subtrahieren Sie den Index von der Spaltenlänge und addieren dann 1:

LENGTH(email) - INSTR(email, '@') + 1

Möglicherweise möchten Sie auch einen Teilstring abrufen, der nicht am Ende des Strings endet, sondern an einem bestimmten Zeichen, z. B. vor „.“ So können Sie dies tun:

SELECT
  email,
  SUBSTR(email, INSTR(email, '@'), INSTR(email, '.') - INSTR(email, '@')) AS substring
FROM emails;

Das Ergebnis dieser Abfrage ist:

E-Mail Teilstring
[email protected] @googlemail
[email protected] @zoho
[email protected] @yahoo
[email protected] @onet

Der Teil INSTR(email, '.') - INSTR(email, '@') berechnet einfach die Länge des Teilstrings.