比如一个单子,多个收据单用逗号隔开,怎么把这一个单子所有收据单独展示出来,行转成列呢?
方法一:
这里需要用到循环,首先创建一个1-10的序列:
SELECT
@rownum :=@rownum + 1 AS seq
FROM
(SELECT @rownum := 0) r,
bills
LIMIT 0,10
其次依次运用
SUBSTRING_INDEX(b.receipt_no, ',', seq)
从左到右取单据,
再用
CONCAT(SUBSTRING_INDEX(b.receipt_no, ',', seq - 1),',')
取它前面的多余的单据,加上逗号,
最后用replace函数把前面多余取数替换成空值。
循环次数由收据多少决定,这里收据单号都是7位,把逗号替换掉之后除以7即得收据多少。
方法二:
利用Mysql自带的表help_topic里的help_topic_id作为循环序列,
收据大小等于逗号个数+1。
以取出第二个为例,当序号等于2的时候,
先取出前两个0026704,1006327,然后再反向从右到左取出第二个。