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 ?

Comment mettre à jour dynamiquement le nom d'un ensemble de tables en fonction de plages de dates à l'aide d'une instruction Case ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-29 13:39:11478parcourir

How to Dynamically Update a Table's Set Name Based on Date Ranges Using a Case Statement?

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!

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