Diviser la chaîne donnée
Pour diviser les dates données représentées par p_dates, utilisez une expression régulière pour extraire les plages de dates entre parenthèses. Par exemple :
SELECT string_to_array(p_dates, '[,]+') AS dates;
Diviser les ensembles donnés
Utilisez une expression régulière similaire pour diviser les ensembles en p_sets en utilisant des virgules comme délimiteur :
SELECT string_to_array(p_sets, '[,]+') AS sets;
Préparation du relevé de cas dynamique
Avec les dates fractionnées et ensembles, construisez une instruction case dynamique à l'aide d'une boucle :
DECLARE dates CHAR[], sets CHAR[]; BEGIN -- Get split dates and sets SELECT * INTO dates, sets FROM ( SELECT string_to_array(p_dates, '[,]+') AS dates, string_to_array(p_sets, '[,]+') AS sets ); -- Loop through each pair of date range and set FOR i IN 1..ARRAY_UPPER(sets) LOOP -- Construct CASE statement CASE WHEN given_dates BETWEEN split_part(dates[i], 'to', 1) AND split_part(dates[i], 'to', 2) THEN sets[i] END END CASE; END;
Cela générera une instruction CASE dynamique qui attribue des noms d'ensemble en fonction des plages de dates.
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!