分割给定字符串
要分割 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中文网其他相关文章!