如何通过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命令后的结果是( ). ...
最新文章
- Ubuntu 系统如何修改主机名
- tcp传输中的序列号
- Scrapy实战篇(一)之爬取链家网成交房源数据(上)
- 越南估值最高的电商公司之一:Tiki获1亿美元融资!
- 全选文字的快捷键_高效办公必备Excel快捷键之Ctrl+26个字母!掌握它们,告别加班...
- java hashmap遍历顺序_Java中HashMap遍历的两种方式
- 1.x和2.x的区别
- 非阻塞同步算法实战(二)-BoundlessCyclicBarrier
- 部门WIFI配置-防火墙-核心交换机和POE交换机
- java下载ftp_Java FTP下载文件
- Julia的Dates库是重要和必要的补充!
- linux修复硬盘文件命令,fsck命令_Linux fsck 命令用法详解:检查并且试图修复文件系统中的错误...
- win7 、2008 提示Error 1606 Could Not Access Network Location %SystemDrive%/inetpub/wwwroot/ 的错误解决方法...
- Java 结构化数据处理开源库 SPL
- “洋葱狗”潜伏3年终曝光,定期偷袭能源及交通行业
- 物联网网线POE供电主控设计方案
- ASEMI线性稳压电源芯片AMS1117-3.3参数及接线电路图
- AWS KVS(Kinesis Video Streams)之WebRTC移植编译(四)
- 使用 DISM 或系统更新准备工具修复 Windows 更新错误
- 防火墙(ASA)的基本配置与远程管理
热门文章
- ActiveMQ集成Spring
- VTK:vtk3DSImporter用法实战
- OpenCASCADE:形状愈合之根据指定标准分割形状的工具
- wxWidgets:wxScopedArray< T >类模板的用法
- boost::reverse_copy相关的测试程序
- boost::mp11::mp_iota相关用法的测试程序
- boost::math::non_central_chi_squared用法的测试程序
- boost::hana模块使用 Hana 实现基本维度分析的示例
- GDCM:gdcm::FilenameGenerator的测试程序
- GDCM:gdcm::ByteSwap的测试程序