Réplication de l'explose() de PHP dans MySQL
MySQL n'offre pas d'équivalent direct à la fonction explode()
de PHP pour le fractionnement de chaînes. Cela présente souvent un défi lorsqu'il faut analyser des données de chaîne dans des requêtes SQL. Cependant, une fonction personnalisée peut résoudre efficacement cette limitation.
Une fonction MySQL pour le fractionnement de chaînes
Le code SQL suivant définit une fonction, SPLIT_STRING()
, qui prend une chaîne, un délimiteur et une position en entrée :
<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>
Utilisation de la fonction SPLIT_STRING()
Cette fonction est utilisée en fournissant la chaîne cible, le caractère délimiteur (par exemple, ',', '-' ou tout autre caractère unique) et la position souhaitée de la sous-chaîne. Par exemple :
<code class="language-sql">SELECT SPLIT_STRING('apple, pear, melon', ',', 2);</code>
Cette requête renverrait « poire ».
Considérations importantes
La fonction SPLIT_STRING()
, telle que présentée, ne renvoie qu'une seule sous-chaîne basée sur la position spécifiée. Pour récupérer plusieurs sous-chaînes, une approche plus complexe, impliquant potentiellement du SQL procédural ou d'autres techniques, serait nécessaire. Les expressions régulières peuvent offrir une autre solution pour les besoins de manipulation de chaînes plus complexes.
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!