sql >> Database teknologi >  >> RDS >> Mysql

Sådan udpakkes en understreng i MySQL

Problem:

Du vil udtrække en understreng fra teksten i en given kolonne.

Eksempel:

Vores database har en tabel med navnet web_address med data i kolonnerne id og address . Vi ønsker at fjerne 'www. ' i begyndelsen og '.com ’ i slutningen af ​​hver address .

id adresse
1 www.example.com
2 www.google.com
3 www.learnsql.com

Løsning 1:

Sådan fjerner du de første 4 tegn:

SELECT
SUBSTR(address, 5, LENGTH(address) -4) AS substring
FROM web_address;

Sådan fjerner du de sidste 4 tegn:

SELECT
SUBSTR(address, 1, LENGTH(address) -4) AS substring
FROM web_address;

Sådan fjerner du de første 4 tegn og de sidste 4 tegn:

SELECT
SUBSTR(address, 5, LENGTH(address) -8) AS substring
FROM web_address;

Løsning 2:

Sådan fjerner du de første 4 tegn:

SELECT
SUBSTRING(address, 5, LENGTH(address)) AS substring
FROM web_address;

Sådan fjerner du de sidste 4 tegn:

SELECT
SUBSTRING(address, 1, LENGTH(address) -4) AS substring
FROM web_address;

Sådan fjerner du de første 4 tegn og de sidste 4 tegn:

SELECT
SUBSTRING(address, 5, LENGTH(address) -8) AS substring
FROM web_address;

Løsning 3:

Sådan fjernes alle tegn før det andet '.' fra højre:

SELECT
SUBSTRING_INDEX(address, '.', -2) AS substring
FROM web_address;

For at fjerne alle tegn efter den anden '.' fra venstre:

SELECT
SUBSTRING_INDEX(address, '.', 2) AS substring
FROM web_address;

For at fjerne alle tegn efter det andet '.' fra venstre, fjern derefter alle tegn før det første '.' fra højre:

SELECT
SUBSTRING_INDEX(
	SUBSTRING_INDEX(address, '.', 2),
	'.',
	-1
) AS substring
FROM web_address;

Resultatet er:

understreng
eksempel
google
learnsql

Diskussion:

Den første og den anden løsning fjerner begge et specificeret antal tegn fra teksten med SUBSTR() eller SUBSTRING() fungere. SUBSTR() er et synonym for SUBSTRING() . De kræver begge strengen og startpositionen som argumenter. Det sidste argument, som definerer antallet af tegn, der skal udtrækkes, er valgfrit. Hvis det sidste argument udelades, vil hele strengen (fra startpunktet) blive returneret.

I den tredje løsning er SUBSTRING_INDEX() funktionen fjerner teksten før eller efter de angivne tegn. Det kræver som argumenter strengen, tegnet og hvor mange forekomster af tegnet der skal stødes på, til hvor tekstudtrækket starter.


  1. Få det samlede antal rækker, når du bruger LIMIT?

  2. Hvordan afinstallerer du MySQL fra Mac OS X?

  3. Høj tilgængelighed på et begrænset budget - implementering af en minimal MySQL Galera Cluster med to knudepunkter

  4. GUI-værktøj til PostgreSQL