sqlite使用substr和intr实现行转列?

源表:detail
在这里插入图片描述

处理效果:
在这里插入图片描述

sql语句:
在这里插入图片描述

with recursive
    func(f, smcl_num) as (select part, length(part) - length(replace(part, ';', ''))
                          from chq3g4
                          union
                          select ltrim(ltrim(f, substr(f, 1, instr(f, ';') - 1)), ';'), smcl_num - 1
                          from func
                          where smcl_num > 0),
    detail as (select case
                          when instr(f, ';') = 0 then f
                          else substr(f, 1, instr(f, ';') - 1)
                          end col1
               from func)
SELECT substr(col1, 1, instr(col1, ':')-1) AS col1,
       substr(substr(col1, instr(col1, ':')+1), 1, instr(substr(col1, instr(col1, ':')+1), ':')-1) AS col2,
--        substr(substr(col1, instr(col1, ':')+1), instr(substr(col1, instr(col1, ':')+1), ':')+1) AS col31,
       substr(substr(substr(col1, instr(col1, ':')+1), instr(substr(col1, instr(col1, ':')+1), ':')+1), 1, instr(substr(substr(col1, instr(col1, ':')+1), instr(substr(col1, instr(col1, ':')+1), ':')+1), ':')-1) AS col3,
       substr(substr(substr(col1, instr(col1, ':')+1), instr(substr(col1, instr(col1, ':')+1), ':')+1),instr(substr(substr(col1, instr(col1, ':')+1), instr(substr(col1, instr(col1, ':')+1), ':')+1),':') + 1) AS col4
from detail;

原理:
利用现有的字符串处理函数想尽办法进行处理。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值