Maison >base de données >tutoriel mysql >Comment mettre à jour dynamiquement le nom d'un ensemble de tables en fonction de plages de dates à l'aide d'une instruction Case ?
Déclaration de cas dynamique pour la mise à jour à l'aide de dates et d'ensembles fractionnés
Problème :
Étant donné deux paramètres, p_dates et p_sets, contenant respectivement des plages de dates et des noms d'ensemble, l'objectif est de préparer une instruction de cas SQL dynamique qui met à jour la colonne set_name d'une table avec le nom d'ensemble approprié en fonction de la plage de dates donnée.
Solution :
1. Fractionnement des dates :
Pour diviser le paramètre p_dates en plages de dates individuelles, utilisez la fonction string_to_array() avec une virgule (,) comme délimiteur :
SELECT unnest(string_to_array(p_dates, ',')) AS date_range;
2. Fractionnement des ensembles :
De même, pour diviser le paramètre p_sets en noms d'ensembles individuels, utilisez la même technique :
SELECT unnest(string_to_array(p_sets, ',')) AS set_name;
3. Préparation d'une déclaration de cas dynamique :
À l'aide des dates et des ensembles fractionnés, concaténez-les dynamiquement dans une déclaration de cas :
CASE WHEN given_dates BETWEEN split_part(date_range, 'to', 1)::date AND split_part(date_range, 'to', 2)::date THEN set_name ELSE NULL END
Mise en œuvre :
Pour mettre à jour la table table_name, utilisez le SQL suivant déclaration :
UPDATE table_name SET set_name = ( CASE WHEN given_dates BETWEEN split_part(date_range, 'to', 1)::date AND split_part(date_range, 'to', 2)::date THEN set_name ELSE NULL END ) FROM split_dates JOIN split_sets ON 1 = 1;
Avantages :
Cette approche dynamique permet des mises à jour flexibles basées sur des paramètres changeants, éliminant le besoin d'instructions de cas statiques et offrant une solution plus polyvalente pour la plage de dates et la manipulation des paramètres.
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!