mysql使用技巧-列转行
一、原始记录

在calculate_type列中有6个逗号格开的值;需要把这6个值取出来,放到每一行。
二、转换之后的最终效果

三、实现思路
1、首先要了解一个函数的用法
substring_index(string,sep,num)
参数说明:
string:用于截取目标字符串的字符串。可为字段,表达式等。
sep:分隔符,string存在且用于分割的字符,比如“,”、“.”等。
num:序号,为非0整数。若为整数则表示从左到右数,若为负数则从右到左数。
如:
SELECT SUBSTRING_INDEX("www.wmdy.com",'.',1)
返回值:www
SELECT SUBSTRING_INDEX("www.wmdy.com",'.',2)
返回值:www.wmdy
SELECT SUBSTRING_INDEX("www.wmdy.com",'.',-1)
返回值:com
SELECT SUBSTRING_INDEX("www.wmdy.com",'.',-2)
返回值:wmdy.com
2、从上面的函数参数中能看出,需要有一个序号参数(num)
SELECT ROW_NUMBER() OVER(ORDER BY A.id) AS row_num FROM cw_calculate_type A
用ROW_NUMBER()函数拿到行号,只要这行号的最大值大于calculate_type列中值的个数就行。
3、完整的SQL

SUBSTRING_INDEX(SUBSTRING_INDEX(B.calculate_type,',',A.row_num),',',-1)
这个sql的效果是取出前面几个值的最后一个值。
LENGTH(B.calculate_type)-LENGTH(REPLACE(B.calculate_type,',',''))+1
这个SQL中算出calculate_type列中有多少个值。
相关推荐
-
「nginx」十、nginx的location配置详解2026-07-04 00:51:45 -

最清晰的mysql体系架构图 ,助你深度掌握MySQL开发管理,赢在大数据时代
最清晰的mysql体系架构图 ,助你深度掌握MySQL开发管理,赢在大数据时代2026-07-04 00:21:47 -
PHP读取Excel内的图片2026-07-03 00:07:41 -
mysql:Otter跨机房数据同步(单向)2026-07-03 00:02:48 -

在windows10系统下搭建IIS+PHP+MYSQL+phpMyAdmin服务器运行环境
在windows10系统下搭建IIS+PHP+MYSQL+phpMyAdmin服务器运行环境2026-07-02 00:15:08