MYSQL字段拆分问题

现在有个字段是存储考勤班次的,如何把 week后面的 星期数取出来呢   

[{"startDate":"08:45","endDate":"17:45","week":"1"},{"startDate":"08:45","endDate":"17:45","week":"2"},{"startDate":"08:45","endDate":"17:45","week":"3"},{"startDate":"08:45","endDate":"17:45","week":"4"},{"startDate":"08:45","endDate":"17:45","week":"5"}]

gjch1993 发布于 2019-2-22 17:25
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
5
axingLv6专家互助
发布于2019-2-22 19:25
最佳回答
1
啊哈Lv2见习互助
发布于2019-2-22 18:08
select SUBSTRING_INDEX(REPLACE(t,CONCAT(SUBSTRING_INDEX(t, '"week":', rowNo),'"week":"'),''),'"',1) as t from
(
SELECT a.*,(@rowNum:=@rowNum+1) as rowNo,length(t) - length( REPLACE(t,'},{','}{')) as num
from
(
select
'[{"startDate":"08:45","endDate":"17:45","week":"1"},{"startDate":"08:45","endDate":"17:45","week":"2"},{"startDate":"08:45","endDate":"17:45","week":"3"},{"startDate":"08:45","endDate":"17:45","week":"4"},{"startDate":"08:45","endDate":"17:45","week":"5"}]'
as t 
)a JOIN(
select * from `table`,(Select (@rowNum :=0)) c
)b on  1=1
)x where rowNo<=num
`table` 这个表可以随便一张数据库存在的表 并且条数要大于或等于num


最佳回答
0
ycming7474Lv2初级互助
发布于2019-2-22 17:27

用find()查找出要找的“:”位置,然后用mid()截取。

因为你这边的数据格式是标准化的。

最佳回答
0
chen96982468Lv2见习互助
发布于2019-2-22 17:55

为什么要用 json呢

  • gjch1993 gjch1993(提问者) 没办法 这个是厂商返回来存在数据库里面的数据
    2019-02-22 18:10 
  • 5关注人数
  • 865浏览人数
  • 最后回答于:2019-2-22 19:25
    请选择关闭问题的原因
    确定 取消
    返回顶部