当前位置: 首页 > news >正文

字符串分割并展开成表格的SQL实现方法

一、场景案例

在数据开发类项目中,常常会遇到需要将字符串进行切割并展开成表格的场景,如以下两种常见的案例:

1.标签类型数据:如将员工标签类型的数据

- 技能:Java、Spring、微服务、项目管理 - 项目经验:电商、金融、教育 - 工作风格:#执行力强 #跨部门协作 #数据驱动

2.分类层级数据:如将组织部门层级数据:“/集团/分公司/信息技术部/数据团队”

除此之外,在一些特定的业务场景中,如证券场景中,需要将一笔回购合约涉及到的多个质押券进行拆分(提取每个质押券有质押数量及对应标准券转换比例),数据示例如下:

另外,API请求的返回的数据多为半结构化的字典列表数据,需要将每行数据从列表中进行提取出来再进行后续的处理,如以下数据:

{"data": [ {"AMOUNT":-9000,"SUB_TYPE_NAME":"债券分销","BRANCH_NAME":"银行间","TYPE_NAME":"收入","BUSI_DATE":"20250831","PROJECT_NAME":"调整1月分销佣金-24****MTN001"}, {"AMOUNT":-1075.61,"SUB_TYPE_NAME":"债券分销","BRANCH_NAME":"银行间","TYPE_NAME":"收入","BUSI_DATE":"20250531","PROJECT_NAME":"调整计提1月及3月分销佣金"} ], "success":true }

二,各类主流SQL方言实现方法

针对这类场景,目前没有标准SQL函数支持实现该功能。各类SQL方言通过自定义方法进行支持,以下是常用的实现方法。

Spark/Hive SQL

采用split + explode(及升级版posexplode)。以下为测试案例:

利用该方法可以轻松的回购质押券进行拆分处理:

PostgreSQL

有两种方法:

方法一:首先利用string_to_array将字符串切割成数组,然后利用unnest将数组扩展成表

方法二:直接利用regexp_split_to_table将字符串切割并转换成表

Oracle

利用connect by + Level来实现

MySQL

5.x+版本只能使用数字辅助表+SUBSTRING_INDEX。

SELECT o.order_id, j.product_id FROM orders o JOIN JSON_TABLE( CONCAT('["', REPLACE(o.product_ids, ',', '","'), '"]'), '$[*]' COLUMNS (product_id INT PATH '$') ) AS j;

SQL Server

早期版本无内置函数,只能通过自定义表值函数(TVF)或者XML方法

2016之后的版本可使用原生方法STRING_SPLIT

--带序号的版本(SQL Server 2022+) SELECT value, ordinal FROM STRING_SPLIT('a,b,c', ',', 1) -- 第三个参数启用序号

三、结论

Spark SQL、PostgreSQL最方便,思路也比较相似,都是先将字符串拆分数组,然后扩展成表。SQLServer新版本实现较为方法,直接一个函数搞定。Oracle利用其connect by来实现,也相对便捷,只是相对主流SQL方言比较小众一点。Mysql新版本相对方便一点,老版本需要辅助表增加维护成本。

文章转载自:大汪的数据之路

原文链接:https://www.cnblogs.com/davablog/p/19497701

体验地址:http://www.jnpfsoft.com/?from=001YH

http://www.cnnetsun.cn/news/720773.html

相关文章:

  • PVC字牌定制全解析:快速、免费、精准,如何满足您的商业标识需求?
  • 什么是视频重保
  • 1985-2024年我国30米分辨率树木覆盖栅格数据
  • 2026年TOP3 EOR名义雇主模式服务推荐,让用工更灵活
  • 基于STM32的智能台灯设计与实现
  • stm32TIM输入捕获基本结构
  • 从零开始学构建Docker镜像:4种实用方法+生产级实践规范
  • VirtualLab Fusion应用:导入材料数据
  • 吐血推荐!研究生必备AI论文平台TOP10测评
  • 大数据计算机毕设之基于Python网易云音乐排行榜数据分析系统设计与实现基于大数据的网易云音乐排行榜数据分析可视化系统(完整前后端代码+说明文档+LW,调试定制等)
  • 5款AI PPT工具测评:免费又实用,这些工具值得推荐!
  • 5款AI PPT工具测评:免费好用的AI PPT工具推荐,真
  • 【新】基于SSM的智能车库管理平台【源码+文档+调试】
  • C++ 中全局 / 静态对象的生命周期细节
  • 全网最全2026本科生AI论文写作软件TOP10:开题报告文献综述神器推荐
  • 树的练习7--------LCR 052.递增顺序搜索树
  • SSM290吃货美食网站掌柜有礼vue
  • SSM295的企业销售人才培训系统vue
  • AI写作知识体系:架构、理论与工程实践【高级版】
  • Wi-Fi信号检测心跳技术:非接触式心率监测新突破
  • 大数据毕设项目:基于hadoop的山东瓜果蔬菜分析系统(源码+文档,讲解、调试运行,定制等)
  • Selenium中隐式等待(Implicit Wait)和显式等待(Explicit Wait)的区别
  • SSM277课程在线考试组卷管理系统vue
  • 大数据毕设项目推荐-基于python的灾情数据可视化系统基于python大数据的自然灾害地震等数据可视化分析系统【附源码+文档,调试定制服务】
  • 我是AI应用架构师,给某制造企业做算力规划的过程,全记录
  • 大数据毕设项目:基于机器学习的网络购物平台的智能推荐(源码+文档,讲解、调试运行,定制等)
  • 达梦数据库使用过程中常见问题
  • 【毕业设计】基于机器学习的网络购物平台的智能推荐(源码+文档+远程调试,全bao定制等)
  • 强烈安利专科生必用TOP8一键生成论文工具
  • 大数据毕设选题推荐:基于django的菜价可视化系统蔬菜销售分析与预测可视化系统【附源码、mysql、文档、调试+代码讲解+全bao等】