Heim >Datenbank >MySQL-Tutorial >Wie kann ich Satznamen basierend auf Datumsbereichen in SQL dynamisch zuweisen?

Wie kann ich Satznamen basierend auf Datumsbereichen in SQL dynamisch zuweisen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-26 03:49:09769Durchsuche

How to Dynamically Assign Set Names Based on Date Ranges in SQL?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn