mysql substring substring_index functions with examples
Découvrez les fonctions MySQL SUBSTRING et SUBSTRING_INDEX et leur utilisation avec plusieurs exemples:
La fonction MySQL Substring est utilisée pour extraire une sous-chaîne ou une chaîne partielle par rapport à la chaîne d'entrée. Comme son nom l'indique, la fonction Substring opère sur une entrée de chaîne et renvoie une sous-chaîne plus petite par rapport aux options spécifiées.
Nous découvrirons également une autre variante du SUBSTRING appelée SUBSTRING_INDEX. Cette fonction accepte un caractère ou une valeur de chaîne comme délimiteur et exécute une recherche par rapport à la valeur de délimiteur donnée.
Nous examinerons également quelques exemples pour comprendre comment ces fonctions peuvent être utilisées lors de l'interrogation de données dans le cadre des requêtes SELECT.
Ce que vous apprendrez:
SUBSTRING MySQL
Syntaxe:
// format 1 SELECT SUBSTRING('{String Value}', {start_index}, {count}); // format 2 SELECT SUBSTRING('{String Value}'FROM {start_index} for {count});
Il existe 2 façons d'utiliser la fonction SUBSTRING.
Comprenons la syntaxe avant de plonger dans les exemples.
- {Valeur de chaîne}: Il s'agit de la valeur de chaîne réelle ou du nom de colonne contenant la chaîne sur laquelle travailler.
- {start_index}: start_index est l'index de gauche ou de droite où la sous-chaîne serait démarrée. Les valeurs peuvent être positives ou négatives selon que nous voulons extraire String du côté gauche ou du côté droit, respectivement. Cela deviendra plus clair avec les exemples.
- {compter}: Ce champ est facultatif et spécifie le nombre de caractères du start_index champ pour lequel la sous-chaîne doit être extraite. S'il n'est pas mentionné, alors la chaîne entière à partir de la correspondance start_index serait retourné.
Le format2 est une variante du format1, sauf qu'il est plus lisible en utilisant les mots-clés FROM et FOR. Donc ici, FROM est utilisé avant de mentionner le start_index value, et FOR est utilisé avant de mentionner le compter .
Voyons quelques exemples pour comprendre la fonction MySQL SUBSTRING.
Prenons la valeur d'entrée de chaîne comme Aide aux tests de logiciels
Les index de chaîne ressembleront au tableau ci-dessous
un | deux | 3 | 4 | 5 | 6 | sept | 8 | 9 | dix | Onze | 12 | 13 | 14 | quinze | 16 | 17 | 18 | 19 | vingt | vingt et un |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
S | ou | F | t | dans | à | r | est | T | est | s | t | je | n | g | H | est | l | p |
Exemple MySQL SUBSTRING
Sans compter
Supposons que nous voulions extraire le texte d'aide de la chaîne ci-dessus - H a un index de 18
Voyons la requête ci-dessous:
SELECT SUBSTRING('Software Testing Help', 18) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 18) as extracted_string; // Output Help
Il est important de noter ici que nous n'avons mentionné aucune valeur pour le compter, mais nous obtenons toujours la chaîne correcte - c'est parce que lorsque le décompte est omis, la chaîne entière à partir de l'index donné est renvoyée.
Dans ce cas, si nous mentionnons l'index de départ, par exemple, pour «T» (index 10)
SELECT SUBSTRING('Software Testing Help', 10) as extracted_string; //Output Testing Help
Comme vous pouvez le voir ci-dessus, la sortie contient l'intégralité du texte «Aide de test».
Avec Count
Voyons maintenant un exemple où nous mentionnerons le nombre de caractères à renvoyer.
Supposons que nous souhaitons simplement extraire le mot «Test» de la chaîne «Aide aux tests de logiciels». Ensuite, nous pouvons mentionner compter comme - 7 (qui est la longueur du mot «Test»)
Voyons la requête ci-dessous:
SELECT SUBSTRING('Software Testing Help', 10, 7) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 10 FOR 7) as extracted_string; //Output Testing
Ici, nous avons décrit à la fois l'index de départ et le nombre de caractères dans le cadre de la requête pour obtenir le résultat requis.
Avec des valeurs d'index négatives
Jusqu'à présent, pour les exemples que nous avons vus, nous avons spécifié le start_index comme valeur positive.
Nous pouvons également spécifier le start_index comme négatif, ce qui signifie simplement qu'au lieu de compter à partir de la gauche, le moteur MySQL essaiera de compter l'index de départ à partir de la fin de la chaîne.
Voyons un exemple
Pour notre chaîne 'Aide sur les tests de logiciels', ajoutons une ligne ci-dessous pour identifier les bons index
L | un | deux | 3 | 4 | 5 | 6 | sept | 8 | 9 | dix | Onze | 12 | 13 | 14 | quinze | 16 | 17 | 18 | 19 | vingt | vingt et un |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
S | ou | F | t | dans | à | r | est | T | est | s | t | je | n | g | H | est | l | p | |||
R | vingt et un | vingt | 19 | 18 | 17 | 16 | quinze | 14 | 13 | 12 | Onze | dix | 9 | 8 | sept | 6 | 5 | 4 | 3 | deux | un |
Ainsi, la ligne du bas représente ici les bons index. Supposons maintenant que nous voulions extraire le mot «Testing» en utilisant la fonction MySQL SUBSTRING avec le bon index.
L'index de droite pour «T» dans Testing est 12 (et l'index de gauche est 10)
SELECT SUBSTRING('Software Testing Help', -12, 7) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM -12 FOR 7) as extracted_string; //Output Testing
Comme vous pouvez le voir dans l'exemple ci-dessus, mentionner les bons index comme une valeur négative produira toujours le même résultat.
Index hors limites
Maintenant, essayez quelques scénarios négatifs
- Lorsque start_index spécifié n’existe pas: c'est-à-dire que l'index spécifié est hors limites, alors la sortie serait vide.
SELECT SUBSTRING('Software Testing Help', 30, 2) as extracted_string; //output Empty String
- Lorsque le nombre spécifié est négatif ou supérieur à la longueur totale de la chaîne, la sortie sera simplement le reste de la chaîne (commençant par start_index spécifié).
SELECT SUBSTRING('Software Testing Help', 5, 100) as extracted_string; //output ware Testing Help
Vous pouvez voir ci-dessus, ici le nombre a été mentionné comme 100, mais la chaîne ne comporte que 21 caractères.
- Essayons un autre scénario avec le décompte mentionné comme négatif.
SELECT SUBSTRING('Software Testing Help', 5, -20) as extracted_string; //output Empty String
Ici aussi, il n'y aura pas d'erreur et il y aura juste une chaîne vide qui serait la sortie.
MySQL SUBSTRING_INDEX
Ceci est une autre variante de la fonction MySQL SUBSTRING.
Ici, au lieu de mentionner la valeur réelle de start_index, nous pouvons simplement mentionner le caractère et l'index et le nombre de fois où le délimiteur doit être recherché avant de renvoyer la sortie.
Un point important à noter ici est le SUBSTRING_INDEX
Fonction MySQL SUBSTRING INDEX:
SUBSTRING_INDEX({StringValue/Column},delimiter,n)
- {StringValue / Column}: Entrée de chaîne réelle ou nom de colonne dans la requête SELECT.
- Délimiteur: C’est le caractère ou la sous-chaîne à rechercher pour extraire la chaîne restante en sortie. Cette valeur est sensible à la casse, elle doit donc être spécifiée telle qu'elle apparaît dans la chaîne réelle.
- n: Nombre de délimiteurs - c'est-à-dire le nombre de fois où le délimiteur doit être recherché avant de renvoyer la chaîne.
Comprenons cela à l’aide de quelques exemples.
Nous utiliserons la même chaîne «Aide aux tests de logiciels» que notre chaîne d’entrée pour tous les exemples que nous allons aborder dans la section suivante ci-dessous.
Recherche d'un personnage
Lors de la recherche du caractère «T», la sortie serait «Software». Notez que l'espace supplémentaire après le mot Logiciel sera également inclus.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', 1) as extracted_string; //Output Software
Recherchez un personnage qui apparaît plus d'une fois. Ici, c'est - «e»
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 1) as extracted_string; //Output Softwar
Dans cet exemple: puisque nous avons spécifié le nombre comme 1, la sortie serait String jusqu'à ce que la première occurrence de «e» soit atteinte.
Modifiez le nombre à 2 pour le même caractère «e».
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 2) as extracted_string; //Output Software T
Maintenant, nous pouvons voir, la sous-chaîne jusqu'à la deuxième occurrence du caractère «e» est retournée.
Prenez un autre exemple pour comprendre que le SUBSTRING INDEX est sensible à la casse. Essayons avec la lettre «t» au lieu de «T»
meilleurs endroits pour regarder des anime en ligne gratuitement
SELECT SUBSTRING_INDEX('Software Testing Help', 't', 1) as extracted_string; //Output Sof
Recherche d'une chaîne
Nous pouvons utiliser la fonction SUBSTRING INDEX pour rechercher une chaîne au lieu d'un caractère. Cherchons le mot 'Test'.
SELECT SUBSTRING_INDEX('Software Testing Help', 'Testing', 1) as extracted_string; //Output Software
Recherche d'une chaîne non existante
Utilisation de SUBSTRING INDEX avec une chaîne qui n’existe pas.
SELECT SUBSTRING_INDEX('Software Testing Help', 'abc', 1) as extracted_string; //Output Software Testing Help
La sortie peut être un peu inattendue ici. Mais comme le moteur MySQL ne peut pas trouver la correspondance requise, il renvoie la chaîne entière en sortie.
Recherche de caractère ou de chaîne dans l'ordre inverse
Semblable à la fonction SUBSTRING, la fonction SUBSTRING INDEX permet également d'avoir le nombre mentionné sous forme de nombres négatifs. Cela signifie qu'au lieu de parcourir de gauche à droite, le moteur MySQL essaiera de trouver une correspondance de droite à gauche.
Comprenez cela à l'aide de quelques exemples.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', -1) as extracted_string; //Output esting Help
Dans l'exemple ci-dessus, vous pouvez voir que le délimiteur est «T» tandis que le nombre est -1. Ainsi, la sortie serait Substring de la droite jusqu'à ce que la première correspondance pour la lettre «T» soit obtenue.
Applications de la fonction MySQL SUBSTRING
Nous utilisons généralement les fonctions MySQL String lors de l'interrogation de données à partir d'une ou plusieurs tables. Il peut être utilisé pour diviser les valeurs dans une colonne, ou simplement pour afficher les valeurs essentielles selon le besoin.
Exemple: Supposons que nous ayons un tableau des détails des employés comprenant l'identifiant, le nom et l'adresse.
Et la colonne d'adresse est de format - {HouseNo}, {StreetName}
Vous trouverez ci-dessous le script pour créer une table et insérer des données factices:
CREATE TABLE employee_details (name VARCHAR(100), address VARCHAR(100), age INT); INSERT INTO employee_details values ('Akash Malhotra', '22,Defence Colony', 24), ('Steve Wilson','12/4,Wilson Street',28), ('Monica Singh','190,Smith Lane',32);
Utilisez la fonction MySQL SUBSTRING pour que le numéro de maison extrait de la colonne d'adresse comme indiqué ci-dessous.
SELECT name, SUBSTRING_INDEX(address,',',1) as house_no, address, age from employee_details
Production:
Nom | numéro de maison | adresse | âge |
---|---|---|---|
Akash malhotra | 22 | 22, colonie de la défense | 24 |
Steve Wilson | 12/4 | 12/4, rue Wilson | 28 |
Monica Singh | 190 | 190, allée Smith | 32 |
Dans la requête ci-dessus, vous pouvez voir que nous avons utilisé la fonction SUBSTRING_INDEX pour obtenir le numéro de maison à partir de la colonne d'adresse et que nous avons utilisé «,» comme délimiteur.
De même, il peut y avoir de nombreuses applications dans lesquelles nous souhaitons extraire la chaîne pour récupérer des informations significatives à partir d'une entrée de chaîne plus grande ou de la valeur de la colonne.
Questions fréquemment posées
Q # 1) Quelle fonction MySQL renvoie la position de la première occurrence d'un SUBSTRING dans la chaîne?
Répondre: MySQL fournit 2 fonctions pour retourner ou extraire un SUBSTRING d'une valeur de chaîne ou de colonne donnée.
- SUBSTRING
Exemple:
SELECT SUBSTRING('Test Input',1,4) as extracted_string; // Output Test
- INDEX DE SOUS-CHAÎNE
Exemple:
SELECT SUBSTRING_INDEX('Test Input','t',1) as extracted_string; //Output Tes
Q # 2) Qu'est-ce que SUBSTRING_INDEX dans MySQL?
Répondre: La fonction SUBSTRING_INDEX est une variante de la fonction SUBSTRING. Alors que dans la fonction SUBSTRING normale, vous devez mentionner l'index sous forme de nombre dans la chaîne d'entrée, pour la fonction SUBSTRING_INDEX, vous pouvez mentionner un caractère ou une sous-chaîne plus petite à rechercher.
Suggestion de lecture = >> Tutoriel MySQL COUNT
Conclusion
Dans ce didacticiel, nous avons découvert les fonctions MySQL SUBSTRING et SUBSTRING_INDEX. Les deux fonctions extraient une sous-chaîne par rapport à la chaîne d'entrée donnée mais fonctionnent d'une manière légèrement différente.
SUBSTRING attend l'index sous forme de nombres réels, tandis que SUBSTRING_INDEX peut avoir le délimiteur spécifié en tant que valeur de caractère ou de chaîne, puis le moteur MySQL peut extraire la chaîne ou le caractère correspondant requis.
Ces deux fonctions sont largement utilisées lorsqu'une colonne contenant plusieurs éléments d'information peut être extraite dans des sous-colonnes à l'aide d'une logique d'extraction de chaîne basée sur des exigences appropriées.
lecture recommandée
- Tutoriel C # String - Méthodes de chaîne avec des exemples de code
- Méthode Java substring () - Tutoriel avec des exemples
- Tutoriel sur la méthode Java String contains () avec des exemples
- Méthode Java String compareTo avec des exemples de programmation
- Fonctions de chaîne en C ++: getline, sous-chaîne, longueur de chaîne, etc.
- Fonctions de conversion de chaîne C ++: chaîne en int & int en chaîne
- Fonctions de chaîne Python
- Fonctions MySQL CONCAT et GROUP_CONCAT avec exemples