Textfunktionen in SQL (Textfunktionen in SQL), Lektion, Seite 723279
https://www.purl.org/stefan_ram/pub/textfunktionen_sql (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
SQL-Kurs

»SUBSTRING_INDEX« in SQL  (MySQL )

Dokumentation der Funktion »SUBSTRING_INDEX«

(Diese Dokumentation ist nicht  die Original-Dokumentation, sondern eine speziell für diesen Kurs geschriebene Dokumentation.)

Lemma

SUBSTRING_INDEX

Proklamation

SUBSTRING_INDEX( Text, Trennzeichen, n )

Parameter

Text - der Text, aus dem ein Teil ausgeschnitten werden soll

Trennzeichen = eine Folge von Schriftzeichen, welche einzelne
Teile innerhalb des Textes voneinander trennt

n -

Ergebnis

Falls n=0:
Ergibt den leeren Text (mit der Länge 0).

Falls n>0:
Ergibt den Teil aus dem Text, der vor dem n-ten Vorkommen der
Trennzeichen liegt.

Falls n<0:
Ergibt den Teil aus dem Text, der hinter dem n-ten (von rechts
gezählt) Vorkommen der Trennzeichen liegt.

Bei der Interpretation der Trennzeichen wird zwischen großen
und kleinen Buchstaben unterschieden.

Beispiele

SUBSTRING_INDEX( 'www.mysql.com', '.', 2 )= 'www.mysql'

SUBSTRING_INDEX( 'www.mysql.com', '.', -2 )= 'mysql.com'

Anwendungsbeispiel Teile eines Feldes entfernen

DROP SCHEMA S; CREATE SCHEMA S; USE S;
CREATE TABLE TITLE ( TITLE VARCHAR ( 255 ) );
INSERT INTO TITLE ( TITLE ) VALUES ( 'Iphigenie auf Tauris - Johann Wolfgang von Goethe' );
INSERT INTO TITLE ( TITLE ) VALUES ( 'Wilhelm Tell - Friedrich Schiller' );
INSERT INTO TITLE ( TITLE ) VALUES ( 'Der zerbrochene Krug - Heinrich von Kleist' );
SELECT * FROM TITLE;

+---------------------------------------------------+
| TITLE |
+---------------------------------------------------+
| Iphigenie auf Tauris - Johann Wolfgang von Goethe |
| Wilhelm Tell - Friedrich Schiller |
| Der zerbrochene Krug - Heinrich von Kleist |
+---------------------------------------------------+
UPDATE TITLE SET TITLE.TITLE = SUBSTRING_INDEX( TITLE.TITLE, ' - ', 1 );
SELECT * FROM TITLE;

+----------------------+
| TITLE |
+----------------------+
| Iphigenie auf Tauris |
| Wilhelm Tell |
| Der zerbrochene Krug |
+----------------------+

Das hier vorgestellte Verfahren setzt allerdings voraus, daß kein Titel die Zeichenfolge » - « enthält. Dies zeigt, daß es im allgemeinen von Anfang an vermieden werden sollte, verschiedene Informationen in einer Spalte zu kombinieren. Diese sollte besser von Anfang an auf zwei Spalten aufgeteilt werden.

Anwendungsbeispiel Tabelle auf zwei Tabellen aufteilen

DROP SCHEMA S; CREATE SCHEMA S; USE S;
CREATE TABLE QUELLE ( QUELLE VARCHAR ( 255 ) );
INSERT INTO QUELLE ( QUELLE ) VALUES ( 'Iphigenie auf Tauris - Johann Wolfgang von Goethe' );
INSERT INTO QUELLE ( QUELLE ) VALUES ( 'Wilhelm Tell - Friedrich Schiller' );
INSERT INTO QUELLE ( QUELLE ) VALUES ( 'Der zerbrochene Krug - Heinrich von Kleist' );

CREATE TABLE TITEL ( TITEL INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, TEXT VARCHAR ( 255 ) );
CREATE TABLE AUTOR ( AUTOR INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, TEXT VARCHAR ( 255 ) );

INSERT INTO TITEL ( TEXT ) SELECT SUBSTRING_INDEX( QUELLE, ' - ', 1 ) FROM QUELLE;

INSERT INTO AUTOR ( TEXT ) SELECT SUBSTRING_INDEX( QUELLE, ' - ', -1 ) FROM QUELLE;

SELECT * FROM TITEL;

+-------+----------------------+
| TITEL | TEXT |
+-------+----------------------+
| 1 | Iphigenie auf Tauris |
| 2 | Wilhelm Tell |
| 3 | Der zerbrochene Krug |
+-------+----------------------+
SELECT * FROM AUTOR;
+-------+----------------------------+
| AUTOR | TEXT |
+-------+----------------------------+
| 1 | Johann Wolfgang von Goethe |
| 2 | Friedrich Schiller |
| 3 | Heinrich von Kleist |
+-------+----------------------------+

Übungsaufgabe

Schreiben Sie eine SELECT-Abfrage, welche eine abgeleitete Tabelle ergibt, die nur das erste  Wort aus jeder Zeile der Tabelle T enthält.

DROP SCHEMA S; CREATE SCHEMA S; USE S;
CREATE TABLE T ( R VARCHAR ( 255 ) );
INSERT INTO T ( R ) VALUES ( 'Ast Aue' );
INSERT INTO T ( R ) VALUES ( 'Bau Boa' );
INSERT INTO T ( R ) VALUES ( 'Bug Bus' );
INSERT INTO T ( R ) VALUES ( 'Hai Hof' );
INSERT INTO T ( R ) VALUES ( 'Kuh Ohm' );
INSERT INTO T ( R ) VALUES ( 'Uhr Uhu' );
SELECT * FROM T;
+---------+
| R |
+---------+
| Ast Aue |
| Bau Boa |
| Bug Bus |
| Hai Hof |
| Kuh Ohm |
| Uhr Uhu |
+---------+

Übungsaufgabe

Schreiben Sie eine SELECT-Abfrage, welche eine abgeleitete Tabelle ergibt, die nur das letzte  Wort aus jeder Zeile der Tabelle T enthält.

DROP SCHEMA S; CREATE SCHEMA S; USE S;
CREATE TABLE T ( R VARCHAR ( 255 ) );
INSERT INTO T ( R ) VALUES ( 'Art Ast' );
INSERT INTO T ( R ) VALUES ( 'Axt Bau' );
INSERT INTO T ( R ) VALUES ( 'Box Bug' );
INSERT INTO T ( R ) VALUES ( 'Erz Hai' );
INSERT INTO T ( R ) VALUES ( 'Hut Kuh' );
INSERT INTO T ( R ) VALUES ( 'Ort Uhr' );
SELECT * FROM T;
+---------+
| R |
+---------+
| Art Ast |
| Axt Bau |
| Box Bug |
| Erz Hai |
| Hut Kuh |
| Ort Uhr |
+---------+

Übungsaufgabe

Schreiben Sie eine SELECT-Abfrage, welche eine abgeleitete Tabelle ergibt, die nur das mittlere Wort aus jeder Zeile der Tabelle T enthält.

DROP SCHEMA S; CREATE SCHEMA S; USE S;
CREATE TABLE T ( R VARCHAR ( 255 ) );
INSERT INTO T ( R ) VALUES ( 'Art Ast Aue' );
INSERT INTO T ( R ) VALUES ( 'Axt Bau Boa' );
INSERT INTO T ( R ) VALUES ( 'Box Bug Bus' );
INSERT INTO T ( R ) VALUES ( 'Erz Hai Hof' );
INSERT INTO T ( R ) VALUES ( 'Hut Kuh Ohm' );
INSERT INTO T ( R ) VALUES ( 'Ort Uhr Uhu' );
SELECT * FROM T;
+-------------+
| R |
+-------------+
| Art Ast Aue |
| Axt Bau Boa |
| Box Bug Bus |
| Erz Hai Hof |
| Hut Kuh Ohm |
| Ort Uhr Uhu |
+-------------+

Zusatzaufgabe

Schreiben Sie eine SELECT-Abfrage, welche eine abgeleitete Tabelle ergibt, die nur das mittlere Wort aus jeder Zeile der Tabelle T enthält.

DROP SCHEMA S; CREATE SCHEMA S; USE S;
CREATE TABLE T ( R VARCHAR ( 255 ) );
INSERT INTO T ( R ) VALUES ( 'Haus Buch Fenster' );
INSERT INTO T ( R ) VALUES ( 'Maschine Woche Werk' );
INSERT INTO T ( R ) VALUES ( 'Tisch Apfel Wind' );
INSERT INTO T ( R ) VALUES ( 'Bild Farbe Bahnhof' );
INSERT INTO T ( R ) VALUES ( 'Kaffee Stern Insel' );
INSERT INTO T ( R ) VALUES ( 'Sofa Getreide Koffer' );
SELECT * FROM T;

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723279 stefan_ram:723279 Textfunktionen in SQL Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723279, slrprddef723279, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/textfunktionen_sql