Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment extraire une sous-chaîne dans MySQL

Problème :

Vous souhaitez extraire une sous-chaîne du texte d'une colonne donnée.

Exemple :

Notre base de données a une table nommée web_address avec des données dans les colonnes id et address . Nous voulons supprimer le 'www. ' au début et le '.com ' à la fin de chaque address .

identifiant adresse
1 www.exemple.com
2 www.google.com
3 www.learnsql.com

Solution 1 :

Pour supprimer les 4 premiers caractères :

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

Pour supprimer les 4 derniers caractères :

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

Pour supprimer les 4 premiers caractères et les 4 derniers caractères :

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

Solution 2 :

Pour supprimer les 4 premiers caractères :

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

Pour supprimer les 4 derniers caractères :

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

Pour supprimer les 4 premiers caractères et les 4 derniers caractères :

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

Solution 3 :

Pour supprimer tous les caractères avant le deuxième '.' en partant de la droite :

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

Pour supprimer tous les caractères après le deuxième '.' en partant de la gauche :

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

Pour supprimer tous les caractères après le deuxième '.' en partant de la gauche, puis supprimer tous les caractères avant le premier '.' en partant de la droite :

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

Le résultat est :

sous-chaîne
exemple
google
apprendre SQL

Discussion :

La première et la deuxième solutions suppriment toutes deux un nombre spécifié de caractères du texte avec le SUBSTR() ou SUBSTRING() une fonction. SUBSTR() est un synonyme de SUBSTRING() . Ils nécessitent tous deux la chaîne et la position de départ comme arguments. Le dernier argument, qui définit le nombre de caractères à extraire, est facultatif. Si le dernier argument est omis, la chaîne entière (à partir du point de départ) sera renvoyée.

Dans la troisième solution, le SUBSTRING_INDEX() La fonction supprime le texte avant ou après les caractères spécifiés. Il nécessite comme arguments la chaîne, le caractère et le nombre d'instances du caractère à rencontrer à l'endroit où l'extraction de texte commence.