Memisahkan Rentetan Diberi
Untuk memisahkan tarikh yang diberikan yang diwakili oleh p_dates, gunakan ungkapan biasa untuk mengekstrak julat tarikh dalam kurungan. Contohnya:
SELECT string_to_array(p_dates, '[,]+') AS dates;
Memisahkan Set Diberi
Gunakan ungkapan biasa yang serupa untuk memisahkan set dalam p_sets menggunakan koma sebagai pembatas:
SELECT string_to_array(p_sets, '[,]+') AS sets;
Menyediakan Sarung Dinamik Penyata
Dengan tarikh dan set pemisahan, bina pernyataan kes dinamik menggunakan gelung:
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;
Ini akan menjana pernyataan CASE dinamik yang memberikan nama set berdasarkan tarikh julat.
Atas ialah kandungan terperinci Bagaimana untuk Menetapkan Nama Set Secara Dinamik Berdasarkan Julat Tarikh dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!