Maison >base de données >tutoriel mysql >Comment simuler la fonction explosive() de PHP dans MySQL pour diviser des chaînes ?

Comment simuler la fonction explosive() de PHP dans MySQL pour diviser des chaînes ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-18 10:36:10107parcourir

How to Simulate PHP's explode() Function in MySQL to Split Strings?

Chaîne divisée dans MySQL

Il n'y a pas de fonction intégrée dans MySQL similaire à la fonction PHP explosive() pour diviser les chaînes. Cependant, avec un peu d’ingéniosité, un effet similaire peut être obtenu.

Créer une fonction d'éclatement personnalisée

Pour créer une fonction d'éclatement personnalisée, vous pouvez utiliser la syntaxe suivante :

<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),
       CHAR_LENGTH(SUBSTRING_INDEX(str, delim, pos-1)) + 1),
       delim, '');</code>

Cette fonction accepte trois paramètres : la chaîne à diviser (str), le délimiteur (delim) et le nombre d'occurrences à renvoyer (pos).

Utilisation

Pour utiliser une fonction d'éclatement personnalisée, appelez-la comme ceci :

<code class="language-sql">SELECT SPLIT_STRING('apple, pear, melon', ',', 1);</code>

Cette requête renverra "pomme" comme première occurrence d'une chaîne séparée par des virgules.

Exemple de cas d'utilisation

Dans votre cas d'utilisation spécifique, vous souhaitez rechercher des résultats sportifs identiques mais dans l'ordre inverse dans différents enregistrements de base de données. Vous pouvez utiliser une fonction d'éclatement personnalisée pour diviser la fraction en nombres individuels et comparer :

<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 renverra les enregistrements de correspondance avec le même score mais dans l'ordre inverse.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn