比如id part
1 225100:03:1:20160701
2 225100:02:3:20160725;225100:01:20:20160601
3 225200:03::20160411
4 225300:02:14:
怎么用sql分成:
id a b c d e
1 225100 100 03 1 20160701
冒号后面没数的为空值。好像要自定义函数,但不知道怎么写,请教各位大神!!!
...全文
20705打赏收藏
求救!sqlite怎么把以:分割的字符串分成多个字段值
比如id part 1 225100:03:1:20160701 2 225100:02:3:20160725;225100:01:20:20160601 3 225200:03::20160411 4 225300:02:14: 怎么用sql分成: id a b c d e 1 225100 100 03 1 20160701 冒号后面没数的为空值。好像要自定义函数,但不知道怎么写,请教各位大神!!!
解决了,自己一步步用sql语句改的:
with a as (
SELECT substr(part,22,21)part FROM chq3g4 where id=1
union all
SELECT substr(part,1,20)part FROM chq3g4 where id=1
union all
SELECT part FROM chq3g4 where id not in (1,4))
SELECT 地区,分类,cast(数量 as int)数量,(substr(日期,1,4)||'-'||substr(日期,5,2)||'-'||substr(日期,7,2))日期 from (
SELECT 地区,分类,数量,'20151220' as 日期 from (
SELECT
substr(part,1,6)地区
,substr(part,8,2)分类
,substr(part,11,2)数量
,substr(part,14,8)日期
from a
where length(part)=21
or length(part)<19
union all
SELECT
substr(part,1,6)地区
,substr(part,8,2)分类
,substr(part,11,1)数量
,substr(part,13,8)日期
from a
where length(part)=20
union all
SELECT
substr(part,1,6)地区
,substr(part,8,2)分类
,null 数量
,substr(part,12,8)日期
from a
where length(part)=19)a
where length(日期)=0
union all
SELECT 地区,分类,数量,日期 from (
SELECT
substr(part,1,6)地区
,substr(part,8,2)分类
,substr(part,11,2)数量
,substr(part,14,8)日期
from a
where length(part)=21
or length(part)<19
union all
SELECT
substr(part,1,6)地区
,substr(part,8,2)分类
,substr(part,11,1)数量
,substr(part,13,8)日期
from a
where length(part)=20
union all
SELECT
substr(part,1,6)地区
,substr(part,8,2)分类
,null 数量
,substr(part,12,8)日期
from a
where length(part)=19)b
where length(日期)!=0
order by 地区,分类)a
这道题帆软问答上我看到一个更简单的方法,但只是看了一遍,没有手动过一遍吧