Heim >Datenbank >MySQL-Tutorial >Wie kann ich Satznamen basierend auf Datumsbereichen in SQL dynamisch zuweisen?
Gegebene Zeichenfolge aufteilen
Um die durch p_dates dargestellten angegebenen Daten aufzuteilen, verwenden Sie einen regulären Ausdruck, um Datumsbereiche in Klammern zu extrahieren. Zum Beispiel:
SELECT string_to_array(p_dates, '[,]+') AS dates;
Gegebene Mengen aufteilen
Verwenden Sie einen ähnlichen regulären Ausdruck, um die Mengen in p_sets aufzuteilen, indem Sie Kommas als Trennzeichen verwenden:
SELECT string_to_array(p_sets, '[,]+') AS sets;
Vorbereitung einer dynamischen Fallerklärung
Mit den geteilten Daten und Sets, erstellen Sie eine dynamische Case-Anweisung mithilfe einer Schleife:
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;
Dadurch wird eine dynamische CASE-Anweisung generiert, die Setnamen basierend auf den Datumsbereichen zuweist.
Das obige ist der detaillierte Inhalt vonWie kann ich Satznamen basierend auf Datumsbereichen in SQL dynamisch zuweisen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!