Penyata Kes Dinamik untuk Kemas Kini Menggunakan Tarikh dan Set Pisah
Masalah:
Diberi dua parameter, p_dates dan p_sets, yang mengandungi julat tarikh dan nama set masing-masing, matlamatnya adalah untuk menyediakan pernyataan kes SQL dinamik yang mengemas kini lajur set_name jadual dengan nama set yang sesuai berdasarkan julat tarikh yang diberikan.
Penyelesaian:
1. Membahagikan Tarikh:
Untuk membahagikan parameter p_dates kepada julat tarikh individu, gunakan fungsi string_to_array() dengan koma (,) sebagai pembatas:
SELECT unnest(string_to_array(p_dates, ',')) AS date_range;
2. Set Pemisah:
Begitu juga, untuk memisahkan parameter p_sets kepada nama set individu, gunakan teknik yang sama:
SELECT unnest(string_to_array(p_sets, ',')) AS set_name;
3. Menyediakan Penyata Kes Dinamik:
Menggunakan tarikh dan set yang dipisahkan, gabungkannya menjadi pernyataan kes secara dinamik:
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
Pelaksanaan:
Untuk mengemas kini jadual table_name, gunakan SQL berikut pernyataan:
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;
Faedah:
Pendekatan dinamik ini membolehkan kemas kini yang fleksibel berdasarkan parameter yang berubah-ubah, menghapuskan keperluan untuk pernyataan kes statik dan menyediakan penyelesaian yang lebih serba boleh untuk julat tarikh dan manipulasi set.
Atas ialah kandungan terperinci Bagaimana Mengemas kini Nama Set Jadual Secara Dinamik Berdasarkan Julat Tarikh Menggunakan Pernyataan Kes?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!