mysql逗号字符串行转列
时间: 2023-10-31 13:18:14 浏览: 171
要将MySQL逗号分隔的字符串进行行转列,可以使用以下方法:
1. 首先,通过group_concat函数将value列的值拼接成一个逗号隔开的字符串。
2. 然后,通过substring_index函数对字符串进行截取,以获取每个逗号分隔的部分。
3. 使用substring_index函数的特性,可以获取字符串中逗号的位置。逗号的个数可以通过计算字符长度的差异来获得。
4. 将逗号的位置与mysql.help_topic表中的id进行比较,以确定截取的位置。
5. 最后,使用distinct函数对截取后的值进行去重。
具体实现步骤如下:
1. 使用group_concat函数将value列的值拼接成一个逗号隔开的字符串。
2. 通过计算字符长度差异来获取字符串中逗号的个数。
3. 将逗号的位置与mysql.help_topic表中的id进行比较,以确定截取的位置。
4. 使用substring_index函数对字符串进行截取,截取每个逗号分隔的部分。
5. 使用distinct函数对截取后的值进行去重。
以下是实现以上步骤的SQL语句:
```sql
select distinct(substring_index(substring_index(a.col,',',b.help_topic_id - 1),',',-1))
from (select group_concat(distinct `value`) as col from `row_to_col`) as a
join mysql.help_topic as b on b.help_topic_id < (char_length(a.col) - char_length(replace(a.col,',','')) - 1)
```
这样可以显示每个值及其对应的主键。
请注意,以上SQL语句中的表名、列名以及条件需要根据实际情况进行修改。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [MySQL中将一列以逗号分隔的值行转列](https://blog.csdn.net/github_33809414/article/details/86656216)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* [MySQL逗号分割字符串转行,转列,json化](https://blog.csdn.net/chyercn/article/details/121377595)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文