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

Wie aktualisiere ich den Satznamen einer Tabelle basierend auf Datumsbereichen mithilfe einer Case-Anweisung dynamisch?

Patricia Arquette
Freigeben: 2024-12-29 13:39:11
Original
497 Leute haben es durchsucht

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

Dynamische Fallanweisung für die Aktualisierung mit geteilten Daten und Sätzen

Problem:

Gegeben zwei Mit den Parametern p_dates und p_sets, die Datumsbereiche bzw. Satznamen enthalten, besteht das Ziel darin, eine dynamische SQL-Case-Anweisung vorzubereiten, die a aktualisiert Geben Sie in der Spalte „set_name“ der Tabelle den entsprechenden Setnamen basierend auf dem angegebenen Datumsbereich ein.

Lösung:

1. Daten aufteilen:

Um den Parameter p_dates in einzelne Datumsbereiche aufzuteilen, verwenden Sie die Funktion string_to_array() mit einem Komma (,) als Trennzeichen:

SELECT unnest(string_to_array(p_dates, ',')) AS date_range;
Nach dem Login kopieren

2. Sätze aufteilen:

Um den Parameter p_sets in einzelne Satznamen aufzuteilen, verwenden Sie auf ähnliche Weise die gleiche Technik:

SELECT unnest(string_to_array(p_sets, ',')) AS set_name;
Nach dem Login kopieren

3. Vorbereiten einer dynamischen Fallaussage:

Verketten Sie diese mithilfe der aufgeteilten Daten und Sätze dynamisch zu einer Fallaussage:

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
Nach dem Login kopieren

Implementierung:

Um die Tabelle „table_name“ zu aktualisieren, verwenden Sie das folgende SQL Aussage:

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;
Nach dem Login kopieren

Vorteile:

Dieser dynamische Ansatz ermöglicht flexible Aktualisierungen basierend auf sich ändernden Parametern, wodurch statische Fallanweisungen überflüssig werden und eine vielseitigere Lösung bereitgestellt wird für Datumsbereich und Einstellungsmanipulation.

Das obige ist der detaillierte Inhalt vonWie aktualisiere ich den Satznamen einer Tabelle basierend auf Datumsbereichen mithilfe einer Case-Anweisung dynamisch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage