Maison >base de données >tutoriel mysql >Comment puis-je répliquer la fonction explosive() de PHP dans MySQL pour la manipulation de chaînes ?
Imiter l'explose() de PHP dans MySQL
MySQL n'offre pas d'équivalent direct à la fonction explode()
de PHP pour le fractionnement de chaînes. Cependant, nous pouvons créer une fonction MySQL personnalisée pour obtenir des résultats similaires. Cette fonction divisera une chaîne en fonction d'un délimiteur et renverra une partie spécifique.
Voici une fonction définie par l'utilisateur à ajouter à votre base de données MySQL :
<code class="language-sql">CREATE FUNCTION SPLIT_STRING(str VARCHAR(255), delim VARCHAR(12), pos INT) RETURNS VARCHAR(255) RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(str, delim, pos), LENGTH(SUBSTRING_INDEX(str, delim, pos-1)) + 1), delim, '');</code>
Cette fonction exploite SUBSTRING_INDEX()
pour localiser la sous-chaîne souhaitée et SUBSTRING()
pour l'extraire. Le paramètre pos
précise quel segment récupérer (en commençant à 1). REPLACE()
supprime tous les délimiteurs persistants.
Exemple d'utilisation de fonction :
Pour extraire le premier élément d'une chaîne séparée par des virgules :
<code class="language-sql">SELECT SPLIT_STRING('apple, pear, melon', ',', 1); -- Returns 'apple'</code>
Intégration dans les requêtes :
Disons que vous avez une table dans laquelle les scores sont stockés sous la forme "teamA - teamB". Pour comparer les scores quel que soit l'ordre :
<code class="language-sql">WHERE opponent1.date = opponent2.date AND SPLIT_STRING(opponent1.score, ' - ', 1) = SPLIT_STRING(opponent2.score, ' - ', 2) AND SPLIT_STRING(opponent1.score, ' - ', 2) = SPLIT_STRING(opponent2.score, ' - ', 1);</code>
Cette requête permet de trouver des matchs avec des dates et des scores identiques, même si l'ordre des équipes est inversé dans la base de données. Notez que nous vérifions maintenant l'égalité des deux parties de la chaîne de score dans les deux sens.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!