Heim >Datenbank >MySQL-Tutorial >Wie aktualisiere ich eine Tabelle basierend auf geteilten Datumsbereichen und Satznamen mithilfe einer Case-Anweisung dynamisch?

Wie aktualisiere ich eine Tabelle basierend auf geteilten Datumsbereichen und Satznamen mithilfe einer Case-Anweisung dynamisch?

Susan Sarandon
Susan SarandonOriginal
2024-12-27 08:29:10210Durchsuche

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

Gegebene Zeichenfolge aufteilen und Case-Anweisung vorbereiten

Um eine Tabelle basierend auf bestimmten Datumsbereichen und entsprechenden Satznamen effizient zu aktualisieren, ist eine Aufteilung erforderlich Die angegebenen Strings werden dynamisch in einzelne Komponenten zerlegt. Dieser Ansatz ermöglicht die Handhabung variabler Eingabeparameter und gewährleistet Flexibilität bei Aktualisierungsvorgängen.

Datumsbereiche aufteilen und Namen festlegen

  1. Datum aufteilen Bereiche:

    • Teilen Sie den p_dates-Parameter mit einem Komma (,) als Trennzeichen. Dies führt zu einer Reihe von Datumsbereichen im Format „Startdatum bis Enddatum“.
    SELECT unnest(string_to_array(p_dates, ',')) AS date_range;
  2. Split Set Names:

    • Auf ähnliche Weise teilen Sie den Parameter p_sets mit einem Komma (,) als Trennzeichen auf. Dies führt zu einer Reihe von Satznamen.
    SELECT unnest(string_to_array(p_sets, ',')) AS set_name;

Dynamische Fallauszugsvorbereitung

Sobald die Datumsbereiche und der Satz festgelegt sind Wenn Namen aufgeteilt werden, kann eine dynamische Case-Anweisung wie folgt erstellt werden Schritte:

  1. Datumsbereiche durchlaufen:

    • Das Array der Datumsbereiche durchlaufen.
  2. Bereich extrahieren Grenzen:

    • Extrahieren Sie das Start- und Enddatum aus jedem Bereich mit „split_part“ und geben Sie als Trennzeichen „bis“ an.
  3. Case-Klausel erstellen:

    • Verwenden Sie für jeden Datumsbereich den Satz „update table_name“. set_name, um den entsprechenden Setnamen zu aktualisieren.
    • Verwenden Sie die BETWEEN-Bedingung, um die Zeilen basierend auf dem Datumsbereich zu filtern.

Der folgende Codeausschnitt zeigt, wie das geht Bereiten Sie den dynamischen Fall vor Aussage:

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;

Wobei:

  • $1 ist ein Platzhalter für den Datumsbereich.
  • $2 ist ein Platzhalter für den entsprechenden Setnamen.

Durch Ausführen dieser vorbereiteten Anweisung mit date_range und set_name als Parametern kann die Tabelle basierend auf den angegebenen Datumsbereichen aktualisiert werden und Namen festlegen.

Das obige ist der detaillierte Inhalt vonWie aktualisiere ich eine Tabelle basierend auf geteilten Datumsbereichen und Satznamen mithilfe einer Case-Anweisung dynamisch?. 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