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

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

Patricia Arquette
发布: 2024-12-26 03:49:09
原创
801 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板