使用场景
为什么要用到字符串分割,行转列
在我们开发的过程中,有时我们会遇到这样的数据结构:
主键id | 子集主键id |
---|---|
id | children_id |
122 |
4795/4796/4797/ |
我们可以看到,在我们根据主表查询子表中的信息时,我们从主表中获取的子表id
是以字符串的形式进行拼接的,当我们要想根据主表关联子表信息时,我们首先将主表的子表id
字段进行字符串拆分,然后将拆分后的字段行转列,以此来关联子表,实现子表信息的查询操作。
字符串分割行转列的思路
我们在进行字符串分割行转列的时候,我们需要用到如下两个主要步骤:
- 使用分隔符,实现字符串拆分操作
- 使用循环,让拆分后的字段实现行转列效果
字符串分割函数
在MySQL
中,其实现字符串拆分的函数为SUBSTRING_INDEX(str,delim,count)
关键字 | 含义 |
---|---|
str | 被拆分的字符串 |
delim | 分隔符 |
count | 在定界符 delim 以及count 出现前,从字符串str返回自字符串。若count为正值,则返回最终定界符(从左边开始)左边的一切内容。若count为负值,则返回定界符(从右边开始)右边的一切内容。 |
它的用法如下:
比如说我们想要获取4795/4796/4797/
中的4795
,我们的做法是:
SELECT SUBSTRING_INDEX('4795/4796/4797/','/',1)
循环思路
在MySQL
中,一共有三种循环,分别为