sql >> Database >  >> RDS >> Mysql

Een subtekenreeks extraheren in MySQL

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
google
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.


  1. Meet u de prestaties van SQL Server met deze statistieken?

  2. Moet scalaire variabele @Id declareren?

  3. Controleer of een object een primaire sleutel is met OBJECTPROPERTY() in SQL Server

  4. .csv importeren met tijdstempelkolom (dd.mm.jjjj uu.mm.ss) met psql \copy