日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發布時間:2024/9/27 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何通过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按内容拆分字段(将一个字段值拆分两个字段)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。