首页 >数据库 >mysql教程 >如何在 SQL 中根据日期范围动态分配集名称?

如何在 SQL 中根据日期范围动态分配集名称?

Patricia Arquette
Patricia Arquette原创
2024-12-26 03:49:09770浏览

How to Dynamically Assign Set Names Based on Date Ranges in SQL?

分割给定字符串

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn