You need to enable JavaScript to run this app. Oracle SQL中将存储的区间范围展开为对应单个数值的实现方案
优惠活动
大模型
产品
解决方案
定价
更多

Oracle SQL中将存储的区间范围展开为对应单个数值的实现方案

区间拆分为单值行实现方案

以下方案默认处理整数区间,若需要处理浮点型区间,可根据实际精度调整步长参数即可。假设原始区间表名为range_table,包含range_start(区间起始值)、range_end(区间结束值,包含)、range_id(区间ID)三个字段:

1. PostgreSQL 实现

直接调用内置序列生成函数即可,代码最简:

SELECT 
  generate_series(range_start, range_end) AS single_value,
  range_id
FROM range_table;

2. MySQL 实现

MySQL 8.0及以上版本用递归CTE实现:

WITH RECURSIVE num_series AS (
  SELECT range_start AS val, range_end, range_id FROM range_table
  UNION ALL
  SELECT val + 1, range_end, range_id FROM num_series WHERE val < range_end
)
SELECT val AS single_value, range_id 
FROM num_series
ORDER BY range_id, val;

低版本MySQL可提前构建一张包含连续数值的辅助表,关联原始区间表即可实现相同效果。

3. Python Pandas 实现

处理本地数据表时可以用explode方法快速拆分:

import pandas as pd

# 读取原始数据得到DataFrame:df
df['single_value'] = df.apply(lambda x: list(range(x['range_start'], x['range_end'] + 1)), axis=1)
result_df = df.explode('single_value')[['single_value', 'range_id']]

内容的提问来源于stack exchange,提问作者Martin T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 19:42:03