Oracle SQL:将序列号From与To字段转换为单行格式的需求
Oracle SQL 序列号拆分展示方案
需求描述
- 输入:表中某字段存储逗号分隔的多个序列号(例:
SN001,SN002,SN003) - 输出:将每个序列号拆分为独立行,与原记录的其他字段一一对应展示
实现SQL
假设数据表名为third_party_serial,包含字段record_id(记录唯一标识)、serial_str(逗号分隔的序列号串),执行以下SQL即可实现格式转换:
SELECT record_id, TRIM(REGEXP_SUBSTR(serial_str, '[^,]+', 1, LEVEL)) AS single_serial FROM third_party_serial CONNECT BY LEVEL <= REGEXP_COUNT(serial_str, '[^,]+') AND PRIOR record_id = record_id AND PRIOR SYS_GUID() IS NOT NULL;
代码解释
REGEXP_SUBSTR(serial_str, '[^,]+', 1, LEVEL):按逗号切割字符串,提取第LEVEL个序列号TRIM():清除序列号前后可能存在的空格REGEXP_COUNT(serial_str, '[^,]+'):统计当前记录中的序列号总数,控制拆分的行数PRIOR record_id = record_id:限定只在当前记录内拆分,避免跨记录关联PRIOR SYS_GUID() IS NOT NULL:防止出现重复行,适配Oracle 11g及以上版本
注意事项
如果表中没有唯一标识字段record_id,请替换为表的主键或其他能唯一区分每条记录的字段,确保拆分逻辑准确。
内容的提问来源于stack exchange,提问作者Sivabalanarayanan L
相关产品推荐
相关产品推荐

