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

Come estrarre una sottostringa in MySQL

Problema:

Vuoi estrarre una sottostringa dal testo in una determinata colonna.

Esempio:

Il nostro database ha una tabella denominata web_address con i dati nelle colonne id e address . Vogliamo rimuovere il "www. ' all'inizio e '.com ' alla fine di ogni address .

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

Soluzione 1:

Per rimuovere i primi 4 caratteri:

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

Per rimuovere gli ultimi 4 caratteri:

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

Per rimuovere i primi 4 caratteri e gli ultimi 4 caratteri:

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

Soluzione 2:

Per rimuovere i primi 4 caratteri:

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

Per rimuovere gli ultimi 4 caratteri:

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

Per rimuovere i primi 4 caratteri e gli ultimi 4 caratteri:

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

Soluzione 3:

Per rimuovere tutti i caratteri prima del secondo '.' da destra:

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

Per rimuovere tutti i caratteri dopo il secondo '.' da sinistra:

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

Per rimuovere tutti i caratteri dopo il secondo '.' da sinistra, quindi rimuovere tutti i caratteri prima del primo '.' da destra:

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

Il risultato è:

sottostringa
esempio
google
learnsql

Discussione:

La prima e la seconda soluzione rimuovono entrambe un numero specificato di caratteri dal testo con SUBSTR() o SUBSTRING() funzione. SUBSTR() è sinonimo di SUBSTRING() . Entrambi richiedono la stringa e la posizione iniziale come argomenti. L'ultimo argomento, che definisce il numero di caratteri da estrarre, è facoltativo. Se l'ultimo argomento viene omesso, verrà restituita l'intera stringa (dal punto iniziale).

Nella terza soluzione, il SUBSTRING_INDEX() la funzione rimuove il testo prima o dopo i caratteri specificati. Richiede come argomenti la stringa, il carattere e quante istanze del carattere devono essere incontrate nel punto in cui inizia l'estrazione del testo.