使用分割日期和集进行更新的动态案例语句
问题:
给定两个参数 p_dates 和 p_sets,分别包含日期范围和集合名称,目标是准备一条动态 SQL case 语句,根据给定的日期范围使用适当的集名称更新表的 set_name 列。
解决方案:
1.分割日期:
要将 p_dates 参数分割为各个日期范围,请使用 string_to_array() 函数并以逗号 (,) 作为分隔符:
SELECT unnest(string_to_array(p_dates, ',')) AS date_range;
2.拆分集:
类似地,要将 p_sets 参数拆分为单独的集名称,请使用相同的技术:
SELECT unnest(string_to_array(p_sets, ',')) AS set_name;
3。准备动态 Case 语句:
使用分割日期和集合,将它们动态连接成一个 case 语句:
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
实现:
要更新table_name表,请使用以下SQL语句:
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;
好处:
这种动态方法允许根据更改的参数进行灵活更新,消除了静态 case 语句的需要,并提供了更通用的解决方案用于日期范围和设置操作。
以上是如何使用 Case 语句根据日期范围动态更新表的集名称?的详细内容。更多信息请关注PHP中文网其他相关文章!