如何实现MYSQL “将一个字符串以某个分隔符分隔得到多个值” 的函数,并为多个值加上序号

mbz_02120422 2017-02-03 12:04:36
测试表如下:
  
CREATE TABLE `task` (
`p_id` bigint(11) DEFAULT NULL COMMENT '任务编号',
`num_option_data` varchar(1000)
`addtimeYMD` varchar(30)
)
INSERT INTO `` (`p_id`, `addtimeYMD`, `num_option_data`) VALUES (161, '2016-11-12', '0|0|1|0|0|0|1|0|5|0|0|0|2|0|0|0|1|4|0');
INSERT INTO `` (`p_id`, `addtimeYMD`, `num_option_data`) VALUES (111, '2016-11-12', '15|12|0|0|2|2|6|1|1|1|1|0|0');
INSERT INTO `` (`p_id`, `addtimeYMD`, `num_option_data`) VALUES (161, '2016-11-12', '0|0|0|0|5|0|1|0|2|0|0|0|0|0|0|0|0|2|0');
INSERT INTO `` (`p_id`, `addtimeYMD`, `num_option_data`) VALUES (161, '2016-11-12', '1|3|1|0|0|0|0|5|1|0|0|0|0|0|0|0|0|0|0');
INSERT INTO `` (`p_id`, `addtimeYMD`, `num_option_data`) VALUES (161, '2016-11-12', '2|0|0|0|0|0|3|0|0|0|1|1|2|0|2|0|0|5|0');
INSERT INTO `` (`p_id`, `addtimeYMD`, `num_option_data`) VALUES (111, '2016-11-12', '21|15|2|3|3|2|1|1|4|12|0|2|2');
INSERT INTO `` (`p_id`, `addtimeYMD`, `num_option_data`) VALUES (111, '2016-11-12', '18|1|2|3|0|4|0|8|0|13|0|0|7');
INSERT INTO `` (`p_id`, `addtimeYMD`, `num_option_data`) VALUES (111, '2016-11-12', '10|10|2|5|5|4|5|6|1|0|5|2|3');
INSERT INTO `` (`p_id`, `addtimeYMD`, `num_option_data`) VALUES (161, '2016-11-12', '0|3|1|0|0|0|0|0|2|0|1|0|2|0|0|0|1|0|1');
INSERT INTO `` (`p_id`, `addtimeYMD`, `num_option_data`) VALUES (111, '2016-11-12', '9|10|0|0|12|3|3|4|3|0|0|5|4');

分隔符是“|”,比如:第一行数,18个"|"分隔了19个数,目标结果是19行

...全文
637 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
九月茅桃 2017-02-03
  • 打赏
  • 举报
回复
这是mysql字符串拆分,从单行变多列,我已经做了样例,参考mysql单行单列变多行多列:http://blog.csdn.net/mchdba/article/details/53889803
VertigozZ 2017-02-03
  • 打赏
  • 举报
回复
1L的办法可以
zjcxc 2017-02-03
  • 打赏
  • 举报
回复
MySQL没有返回表的函数,所以只能用存储过程+临时表了

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧