120x120
工作中,经常有按规定字符拆分行的情况,比如在订单处理时,有一个客户订单对应多个商品时,需拆分。
在拆分前,我们首先需要知道,取哪个特定的字符进行拆分?
如果是逗号,是中文字符还是英文字符?
如果用length(str)函数,中文返回的结果是3*
英文字符的返回字符是1*;
所以:需要掌握:length(str)和char_length(str)的运用。
以下场景如:                            
usernametags
王五10,11,12
龙大12,13

MYSQL代码:
select a.username,substring_index(substring_index(a.tags,',',b.help_topic_id+1),',',-1) tag
from USER_TAG a join
mysql.help_topic b
on b.help_topic_id < (length(a.tags) - length(replace(a.tags,',',''))+1)
order by username;
                                                              
usernametags
王五10
王五11
王五12
龙大12
龙大13

help_topic是mysql库下的一张表,如果没权限,可以通过:
GRANT SELECT ON mysql.help_topic TO 'autochain_uat'@'localhost'(给用户赋权限);
或:直接新建一个辅助表,从1开始递增,以下代码供参考:
select c.*,
substring_index(substring_index(c.c1,'、',d.ID),'、',-1) as '商品编号',
substring_index(substring_index(c.c2,'、',d.ID),'、',-1) as '转换系数'  
from
(Select a.*,b.dy_bh as c1,b.dy_xs as c2,cf_xs as xs from
(SELECT * from Simple)a LEFT JOIN
(SELECT * from jww_spzh)b on a.sp_bh=b.sp_bh)c left JOIN
cffz d
on d.ID <= (char_length(c.c1) - char_length(replace(c.c1,'、',''))+1);
Tags:
互联故事 » 代码资源 | 评论(0) | 引用(0) | 阅读(502)

表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]