Résumer une colonne séparée par des virgules dans MySQL 4 (pas 5)
Dans MySQL 4, effectuer une opération sur une colonne séparée par des virgules sans l'utilisation d'outils externes peut s'avérer difficile en raison du manque de capacités avancées de manipulation de chaînes. Cet article explore des approches alternatives pour additionner de telles colonnes dans MySQL 4.
Manipulations de chaînes non triviales
Malheureusement, MySQL 4 ne prend pas en charge les procédures stockées, qui offrent fonctions de manipulation de chaînes plus sophistiquées. Cela rend difficile l'exécution de calculs complexes sur des valeurs séparées par des virgules directement à l'aide d'instructions SQL.
Approches alternatives
Une approche possible consiste à mettre à niveau vers MySQL 5 ou version ultérieure, qui inclut la prise en charge des procédures stockées et permet la création de fonctions personnalisées pour gérer de telles opérations. Voici une de ces fonctions qui peut être utilisée dans MySQL 5.0 pour additionner des valeurs séparées par des virgules :
<code class="sql">DELIMITER // CREATE FUNCTION SUM_OF_LIST(s TEXT) RETURNS DOUBLE DETERMINISTIC NO SQL BEGIN DECLARE res DOUBLE DEFAULT 0; WHILE INSTR(s, ",") > 0 DO SET res = res + SUBSTRING_INDEX(s, ",", 1); SET s = MID(s, INSTR(s, ",") + 1); END WHILE; RETURN res + s; END // DELIMITER ;</code>
Cette fonction peut être utilisée comme suit :
<code class="sql">mysql> SELECT SUM_OF_LIST("5,2.1") AS Result; +--------+ | Result | +--------+ | 7.1 | +--------+</code>
Limitations
Bien que cette fonction fournisse une solution pour additionner les valeurs séparées par des virgules dans MySQL 5.0, il est important de noter qu'elle peut ne pas gérer tous les scénarios avec élégance. Par exemple, il traite les virgules de fin et les valeurs vides différemment par rapport aux autres environnements. Par conséquent, une validation et des tests minutieux sont recommandés lors de l’utilisation de cette approche.
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!