如何通过SQL按内容拆分字段(将一个字段值拆分两个字段)
通过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按内容拆分字段(将一个字段值拆分两个字段)相关推荐
- Python语言学习:利用pandas对两列字段元素求差集(对比两列字段所有元素的异同)
Python语言学习:利用pandas对两列字段元素求差集(对比两列字段所有元素的异同) 目录 利用pandas对两列字段元素求差集(对比两列字段所有元素的异同) 输出结果 实现代码 利用pandas ...
- asp怎么循环增加字段和字段对应的值_MySQL数据类型和字段属性原理与用法详解
本文实例讲述了mysql数据类型和字段属性.分享给大家供大家参考,具体如下: 本文内容: 数据类型 数值类型 整数型 浮点型 定点型 日期时间类型 字符串类型 补充: 显示宽度与zerofll 记录长 ...
- mysql 计算 两个字段 之差_MYSQL计算两个字段日期差
一,TIMESTAMPDIFF 语法: TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2). 说明: 返回日期或日期时间表达式datetime_ ...
- 【ArcGIS遇上Python】ArcGIS Python获取某个字段的唯一值(获取指定字段的不同属性值)
以土地利用数据为例,DLMC字段为每个图斑的用地类型,怎样用Python代码获取该字段的属性唯一值? Python代码实现结果: Python源代码: import arcpy from arcpy ...
- oracle求两个字段的日期差
1.单纯求两个字段的日期差: select to_date('08/06/2015','mm/dd/yyyy')-to_date('07/01/2015','mm/dd/yyyy') from dua ...
- 用户操作日志记录字段修改前后值
你可能遇到这样的需求,要详细记录用户的操作日志,像下面这样: 用户张三将年龄从"20"改为"21" 用户张三将爱好从"篮球"改为" ...
- sql server中将一个字段根据某个字符拆分成多个字段显示
sql server 数据库中某张表(Person)的数据信息是: ID Address 1 平山花园-4单元-12幢-203 2 香山花园-3单元-22幢-304 现在有需求是,将地址信息显示形式改 ...
- mysql 把一个字段的值_mysql把一个表某个字段的内容复制到另一张表的某个字段的SQL语句写法...
需求:把一个表某个字段内容复制到另一张表的某个字段. 实现sql语句1: UPDATE file_manager_folder f1 LEFT OUTER JOIN file_manager_fold ...
- 平均成绩是计算数学计算机英语三门,创建一个查询,计算并显示“学号”和“平均成绩”两个字段内容,其中平均成绩 是计算数学、计算机和英语_开卷宝...
"学生表"中有"学号"."姓名"."性别"和"入学成绩"等字段.执行如下SQL命令后的结果是( ). ...
最新文章
- 引入Redis|tensorflow实现 聊天AI--PigPig养成记(3)
- javascript 点点滴滴 jquery
- Javascript中的陷阱大集合【译】
- mongodb 新增字段
- 判断一个路径串是否为有效目录
- 软件测试与评估:Keep/悦跑圈
- c 函数多次声明_C++核心准则C.132:不要没有理由就将函数声明为虚函数
- QT的QStackedLayout
- Xpath延伸以及总结
- QT每日一练day15:QColorDialog颜色对话框
- python画互动图_利用Python画出运动图像
- 跨库事务处理 spring+hibernate+struts2+jta
- 尔雅/广雅 —— 古代的字典
- 【CC评网】2013.第44周 把握每天的第一个小时
- 标准紧固件孔、螺栓孔、自攻螺钉孔、螺纹孔、铆钉孔、腰孔、标准排水孔工艺及规范性公布
- 数据:FIT2CLOUD飞致云连续进入云管理软件市场权威研究报告
- XJTU-SY滚动轴承加速寿命试验数据集
- Java过滤微信昵称特殊字符
- 麦普奇医疗获得千万元A轮融资,投资方为达晨财智...
- 木瓜移动创始人沈思专访——从平台到孵化器
热门文章
- VTK:旋转actor用法实战
- BOOST_VMD_ASSERT_IS_IDENTIFIER宏相关的测试程序
- boost::signals2模块实现定制组合器的测试程序
- boost::hana::erase_key用法的测试程序
- boost::hana::string_c用法的测试程序
- boost::lambda::bind用法的测试程序
- Boost:bimap双图operator bracket的测试程序
- DCMTK:DSRDocument类的测试程序
- VTK:小部件之ImageTracerWidgetInsideContour
- VTK:绘图之PieChartActor