Problem:
Sie möchten eine Teilzeichenfolge aus dem Text in einer bestimmten Spalte extrahieren.
Beispiel:
Unsere Datenbank hat eine Tabelle namens web_address
mit Daten in den Spalten id
und address
. Wir möchten die Datei „www.
entfernen “ am Anfang und die „.com
“ am Ende jeder address
.
id | Adresse |
---|---|
1 | www.example.com |
2 | www.google.com |
3 | www.learnsql.com |
Lösung 1:
Um die ersten 4 Zeichen zu entfernen:
SELECT SUBSTR(address, 5, LENGTH(address) -4) AS substring FROM web_address;
So entfernen Sie die letzten 4 Zeichen:
SELECT SUBSTR(address, 1, LENGTH(address) -4) AS substring FROM web_address;
So entfernen Sie die ersten 4 Zeichen und die letzten 4 Zeichen:
SELECT SUBSTR(address, 5, LENGTH(address) -8) AS substring FROM web_address;
Lösung 2:
Um die ersten 4 Zeichen zu entfernen:
SELECT SUBSTRING(address, 5, LENGTH(address)) AS substring FROM web_address;
So entfernen Sie die letzten 4 Zeichen:
SELECT SUBSTRING(address, 1, LENGTH(address) -4) AS substring FROM web_address;
So entfernen Sie die ersten 4 Zeichen und die letzten 4 Zeichen:
SELECT SUBSTRING(address, 5, LENGTH(address) -8) AS substring FROM web_address;
Lösung 3:
So entfernen Sie alle Zeichen vor dem zweiten „.“ von rechts:
SELECT SUBSTRING_INDEX(address, '.', -2) AS substring FROM web_address;
So entfernen Sie alle Zeichen nach dem zweiten „.“ von links:
SELECT SUBSTRING_INDEX(address, '.', 2) AS substring FROM web_address;
Um alle Zeichen nach dem zweiten „.“ von links zu entfernen, entfernen Sie dann alle Zeichen vor dem ersten „.“ von rechts:
SELECT SUBSTRING_INDEX( SUBSTRING_INDEX(address, '.', 2), '.', -1 ) AS substring FROM web_address;
Das Ergebnis ist:
Teilstring |
---|
Beispiel |
learnsql |
Diskussion:
Sowohl die erste als auch die zweite Lösung entfernen mit dem SUBSTR()
eine bestimmte Anzahl von Zeichen aus dem Text oder SUBSTRING()
Funktion. SUBSTR()
ist ein Synonym für SUBSTRING()
. Beide benötigen die Zeichenfolge und die Startposition als Argumente. Das letzte Argument, das die Anzahl der zu extrahierenden Zeichen definiert, ist optional. Wenn das letzte Argument weggelassen wird, wird die gesamte Zeichenkette (ab dem Startpunkt) zurückgegeben.
In der dritten Lösung, dem SUBSTRING_INDEX()
Funktion entfernt den Text vor oder nach den angegebenen Zeichen. Es erfordert als Argumente die Zeichenfolge, das Zeichen und wie viele Instanzen des Zeichens gefunden werden sollen, bis die Textextraktion beginnt.