Maison >base de données >tutoriel mysql >Comment mettre à jour dynamiquement une table basée sur des plages de dates fractionnées et définir des noms à l'aide d'une instruction Case ?

Comment mettre à jour dynamiquement une table basée sur des plages de dates fractionnées et définir des noms à l'aide d'une instruction Case ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-27 08:29:10210parcourir

How to Dynamically Update a Table Based on Split Date Ranges and Set Names Using a Case Statement?

Diviser la chaîne donnée et préparer l'instruction de cas

Pour mettre à jour efficacement une table en fonction de plages de dates spécifiques et des noms d'ensemble correspondants, il est nécessaire de diviser les chaînes données en composants individuels de manière dynamique. Cette approche permet de gérer les paramètres d'entrée variables et garantit la flexibilité des opérations de mise à jour.

Partage des plages de dates et des noms d'ensemble

  1. Date divisée Plages :

    • Divisez le paramètre p_dates en utilisant une virgule (,) comme délimiteur. Cela entraînera un tableau de plages de dates au format « date_début à date_fin ».
    SELECT unnest(string_to_array(p_dates, ',')) AS date_range;
  2. Noms des ensembles divisés :

    • De même, divisez le paramètre p_sets en utilisant une virgule (,) comme délimiteur. Cela se traduira par un tableau de noms d'ensembles.
    SELECT unnest(string_to_array(p_sets, ',')) AS set_name;

Préparation dynamique de la déclaration de cas

Une fois les plages de dates et définies les noms sont divisés, une instruction de cas dynamique peut être construite en utilisant ce qui suit étapes :

  1. Parcourir les plages de dates :

    • Parcourir le tableau des plages de dates.
  2. Extraire la plage Limites :

    • Extrayez les dates de début et de fin de chaque plage à l'aide de split_part et spécifiez le délimiteur comme "à".
  3. Build Case Clause :

    • Pour chaque plage de dates, utilisez update table_name set set_name pour mettre à jour le nom de l'ensemble correspondant.
    • Utilisez la condition BETWEEN pour filtrer les lignes en fonction de la plage de dates.

L'extrait de code suivant montre comment préparer le dossier dynamique déclaration :

PREPARE upd_tbl AS
UPDATE table_name
SET    set_name = CASE
  WHEN given_date BETWEEN split_part(, 'to', 1)::date
                       AND split_part(, 'to', 2)::date THEN 
  ELSE null
END;

Où :

  • $1 est un espace réservé pour la plage de dates.
  • $2 est un espace réservé pour le nom de l'ensemble correspondant.

En exécutant cette instruction préparée avec date_range et set_name comme paramètres, la table peut être mise à jour en fonction de la date spécifiée plages et noms d'ensembles.

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