分割給定字串
要分割 p_dates 表示的給定日期,請使用正規表示式擷取括號內的日期範圍。例如:
SELECT string_to_array(p_dates, '[,]+') AS dates;
分割給定集合
使用類似的正規表示式以逗號作為分隔符號來分割p_sets 中的集合:
SELECT string_to_array(p_sets, '[,]+') AS sets;
準備動態案例語句
透過分割日期和集合,使用循環建立動態case 語句:
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;
這將產生一個動態CASE 語句,該語句根據日期分配集合名稱範圍。
以上是如何在 SQL 中根據日期範圍動態指派集名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!