通过SQL按内容分拆成多字段

需求描述

将表里的一个字段,该字段的某行开始是key,随后对应的是其value,将key和value分别拆分对应的两个字段。如下图示例:

问题分析

该问题不适合用SQL来处理,因为SQL主要处理表格形式的结构化数据,用程序语言如Java、Python等更方便些。

解决方法

-- # SQL不擅长处理这种数据,用程序语言更方便些。
-- Step1 创建表并初始化数据
CREATE TABLE tb_data(
data varchar(20)
)
INSERT INTO tb_data
SELECT 'a.wav' data UNION
SELECT 1 data UNION
SELECT 2 data UNION
SELECT 'b.wav' data UNION
SELECT 3 data UNION
SELECT 4 data UNION
SELECT 'c.wav' data UNION
SELECT 5 data UNION
SELECT 6 data  UNION
SELECT 7 data -- SELECT * FROM tb_data
-- Step2 创建临时表tmp_data,主要存记录序号、分割开始位置、记录数。
-- DROP TABLE tmp_data;
create TEMPORARY table tmp_data(
id int,
data varchar(20),
pos smallint,
cnt int
)-- Step3 插入临时表。
INSERT INTO tmp_data
SELECT (@i:=@i+1)id,tb_data.*,INSTR(data,'.') dot,cnt
FROM tb_data,(select @i:=0)t ,(SELECT COUNT(1) cnt FROM tb_data) t2 SELECT * FROM tmp_data-- Step4 拆分字段
SELECT B.data,A.data seq
-- *
FROM tmp_data A
JOIN
(SELECT * ,CASE WHEN LEAD(id)OVER(order by id) IS NULL THEN 999999 ELSE LEAD(id)OVER(order by id) END as nextFROM tmp_dataWHERE pos>0
) B
ON A.id > B.id AND A.id < B.next-- Step 4 查看结果
/*
data    seq
a.wav   1
a.wav   2
b.wav   3
b.wav   4
c.wav   5
c.wav   6
c.wav   7
*/

如何通过SQL按内容拆分字段(将一个字段值拆分两个字段)相关推荐

  1. Python语言学习:利用pandas对两列字段元素求差集(对比两列字段所有元素的异同)

    Python语言学习:利用pandas对两列字段元素求差集(对比两列字段所有元素的异同) 目录 利用pandas对两列字段元素求差集(对比两列字段所有元素的异同) 输出结果 实现代码 利用pandas ...

  2. asp怎么循环增加字段和字段对应的值_MySQL数据类型和字段属性原理与用法详解

    本文实例讲述了mysql数据类型和字段属性.分享给大家供大家参考,具体如下: 本文内容: 数据类型 数值类型 整数型 浮点型 定点型 日期时间类型 字符串类型 补充: 显示宽度与zerofll 记录长 ...

  3. mysql 计算 两个字段 之差_MYSQL计算两个字段日期差

    一,TIMESTAMPDIFF 语法: TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2). 说明: 返回日期或日期时间表达式datetime_ ...

  4. 【ArcGIS遇上Python】ArcGIS Python获取某个字段的唯一值(获取指定字段的不同属性值)

    以土地利用数据为例,DLMC字段为每个图斑的用地类型,怎样用Python代码获取该字段的属性唯一值? Python代码实现结果: Python源代码: import arcpy from arcpy ...

  5. oracle求两个字段的日期差

    1.单纯求两个字段的日期差: select to_date('08/06/2015','mm/dd/yyyy')-to_date('07/01/2015','mm/dd/yyyy') from dua ...

  6. 用户操作日志记录字段修改前后值

    你可能遇到这样的需求,要详细记录用户的操作日志,像下面这样: 用户张三将年龄从"20"改为"21" 用户张三将爱好从"篮球"改为" ...

  7. sql server中将一个字段根据某个字符拆分成多个字段显示

    sql server 数据库中某张表(Person)的数据信息是: ID Address 1 平山花园-4单元-12幢-203 2 香山花园-3单元-22幢-304 现在有需求是,将地址信息显示形式改 ...

  8. mysql 把一个字段的值_mysql把一个表某个字段的内容复制到另一张表的某个字段的SQL语句写法...

    需求:把一个表某个字段内容复制到另一张表的某个字段. 实现sql语句1: UPDATE file_manager_folder f1 LEFT OUTER JOIN file_manager_fold ...

  9. 平均成绩是计算数学计算机英语三门,创建一个查询,计算并显示“学号”和“平均成绩”两个字段内容,其中平均成绩 是计算数学、计算机和英语_开卷宝...

    "学生表"中有"学号"."姓名"."性别"和"入学成绩"等字段.执行如下SQL命令后的结果是( ). ...

最新文章

  1. 引入Redis|tensorflow实现 聊天AI--PigPig养成记(3)
  2. javascript 点点滴滴 jquery
  3. Javascript中的陷阱大集合【译】
  4. mongodb 新增字段
  5. 判断一个路径串是否为有效目录
  6. 软件测试与评估:Keep/悦跑圈
  7. c 函数多次声明_C++核心准则C.132:不要没有理由就将函数声明为虚函数
  8. QT的QStackedLayout
  9. Xpath延伸以及总结
  10. QT每日一练day15:QColorDialog颜色对话框
  11. python画互动图_利用Python画出运动图像
  12. 跨库事务处理 spring+hibernate+struts2+jta
  13. 尔雅/广雅 —— 古代的字典
  14. 【CC评网】2013.第44周 把握每天的第一个小时
  15. 标准紧固件孔、螺栓孔、自攻螺钉孔、螺纹孔、铆钉孔、腰孔、标准排水孔工艺及规范性公布
  16. 数据:FIT2CLOUD飞致云连续进入云管理软件市场权威研究报告
  17. XJTU-SY滚动轴承加速寿命试验数据集
  18. Java过滤微信昵称特殊字符
  19. 麦普奇医疗获得千万元A轮融资,投资方为达晨财智...
  20. 木瓜移动创始人沈思专访——从平台到孵化器

热门文章

  1. VTK:旋转actor用法实战
  2. BOOST_VMD_ASSERT_IS_IDENTIFIER宏相关的测试程序
  3. boost::signals2模块实现定制组合器的测试程序
  4. boost::hana::erase_key用法的测试程序
  5. boost::hana::string_c用法的测试程序
  6. boost::lambda::bind用法的测试程序
  7. Boost:bimap双图operator bracket的测试程序
  8. DCMTK:DSRDocument类的测试程序
  9. VTK:小部件之ImageTracerWidgetInsideContour
  10. VTK:绘图之PieChartActor