Probleem:
U wilt een subtekenreeks extraheren uit de tekst in een bepaalde kolom.
Voorbeeld:
Onze database heeft een tabel met de naam web_address
met gegevens in de kolommen id
en address
. We willen de 'www.
. verwijderen ’ aan het begin en de ‘.com
’ aan het einde van elk address
.
id | adres |
---|---|
1 | www.voorbeeld.com |
2 | www.google.com |
3 | www.learnsql.com |
Oplossing 1:
Om de eerste 4 tekens te verwijderen:
SELECT SUBSTR(address, 5, LENGTH(address) -4) AS substring FROM web_address;
Om de laatste 4 tekens te verwijderen:
SELECT SUBSTR(address, 1, LENGTH(address) -4) AS substring FROM web_address;
Om de eerste 4 karakters en de laatste 4 karakters te verwijderen:
SELECT SUBSTR(address, 5, LENGTH(address) -8) AS substring FROM web_address;
Oplossing 2:
Om de eerste 4 tekens te verwijderen:
SELECT SUBSTRING(address, 5, LENGTH(address)) AS substring FROM web_address;
Om de laatste 4 tekens te verwijderen:
SELECT SUBSTRING(address, 1, LENGTH(address) -4) AS substring FROM web_address;
Om de eerste 4 karakters en de laatste 4 karakters te verwijderen:
SELECT SUBSTRING(address, 5, LENGTH(address) -8) AS substring FROM web_address;
Oplossing 3:
Om alle tekens vóór de tweede '.' van rechts te verwijderen:
SELECT SUBSTRING_INDEX(address, '.', -2) AS substring FROM web_address;
Om alle tekens na de tweede '.' van links te verwijderen:
SELECT SUBSTRING_INDEX(address, '.', 2) AS substring FROM web_address;
Om alle tekens na de tweede '.' van links te verwijderen en vervolgens alle tekens vóór de eerste '.' van rechts te verwijderen:
SELECT SUBSTRING_INDEX( SUBSTRING_INDEX(address, '.', 2), '.', -1 ) AS substring FROM web_address;
Het resultaat is:
subtekenreeks |
---|
voorbeeld |
learnsql |
Discussie:
De eerste en de tweede oplossing verwijderen beide een gespecificeerd aantal karakters uit de tekst met de SUBSTR()
of SUBSTRING()
functie. SUBSTR()
is een synoniem voor SUBSTRING()
. Ze hebben allebei de string en de startpositie als argumenten nodig. Het laatste argument, dat het aantal tekens definieert dat moet worden geëxtraheerd, is optioneel. Als het laatste argument wordt weggelaten, wordt de hele string (vanaf het startpunt) geretourneerd.
In de derde oplossing, de SUBSTRING_INDEX()
functie verwijdert de tekst voor of na de opgegeven tekens. Het vereist als argumenten de tekenreeks, het teken en hoeveel exemplaren van het teken moeten worden aangetroffen tot waar de tekstextractie begint.