【业务功能篇12】mysql help_topic_id 将逗号拼接的字段,拆分成多条数据进行显示

业务场景: 表中某个字段,表示问题单号,可能会存在多个问题单号,通过逗号进行拼接,比如 no0001,no0002,no0003 组成一个字段内容,那么我们就会存在一个这样的需求,需要将每个单号都取出来,用于后续的判断

 可以利用mysql内置的表help_topic,存在一个help_topic_id 主键字段,从0开始到685,利用这么多个值,来进行遍历分割逗号拼接的问题单号串。注意就是如果逗号分割符都超过了686个了,那么就是不适用这种方式的,可以自定义一个表,也是从0开始的id字段,需要多少就定义插入多少。

举例:问题表单的 问题单号字段no,将其内容通过',' 分隔符依次转换出来, 这里也可以补充相应业务逻辑,where条件进行过滤。

SELECT
	substring_index( substring_index( a._no, ',', b.help_topic_id + 1 ), ',', - 1 ) AS no 
FROM
	problem_f a
	JOIN mysql.help_topic b ON b.help_topic_id  <  ( length( a._no ) - length( REPLACE ( a._no, ',', '' )) + 1 ) 
WHERE
	DATE_FORMAT( _date, '%Y-%m-%d' ) >= DATE_FORMAT(
	DATE_SUB( CURRENT_DATE, INTERVAL 1 MONTH ),
	'%Y-%m-%d')

题外话: DATE_SUB( CURRENT_DATE, INTERVAL 1 MONTH ) 是取当前系统前一个月


	select DATE_SUB( CURRENT_DATE, INTERVAL 1 MONTH ), CURRENT_DATE

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值