首页 >

mysql根据逗号拆分为多行 |phpmysql手工注入

mysql8.0.25卸载,mysql创建customer表,java宿舍管理系统mysql,php为什么连不上mysql,suse mysql离线安装,phpmysql手工注入mysql根据逗号拆分为多行 |phpmysql手工注入

使用 GROUP_CONCAT 函数

MySQL 提供了一个 GROUP_CONCAT 函数,该函数允许大家将多个字段合并为一个字段,并且可以指定分隔符。大家可以使用该函数来将一个字段中的多个数值拆分为多行。

语法如下:

SELECT 
SUBSTRING_INDEX(SUBSTRING_INDEX(`column_name`, ',', n), ',', -1) AS `new_column_name`
FROM 
`table_name`
WHERE 
n<= LENGTH(`column_name`) - LENGTH(REPLACE(`column_name`, ',', '')) + 1

该语句中,大家使用了 SUBSTRING_INDEX 函数来获取逗号分隔的第 n 个值,使用了 LENGTH 函数来计算逗号的个数,从而可以得到拆分后的行数。不过这种方式会占用大量的系统资源,并且可能会降低数据库的性能。

使用 UNION ALL 操作符

除了使用 GROUP_CONCAT 函数,大家也可以使用 UNION ALL 操作符来实现根据逗号拆分为多行的功能。

语法如下:

SELECT 
`column_name`
FROM 
`table_name`
WHERE 
`column_name` NOT LIKE '%,%'
UNION ALL
SELECT 
SUBSTRING_INDEX(SUBSTRING_INDEX(`column_name`, ',', n), ',', -1)
FROM 
(SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) n
JOIN 
`table_name` ON CHAR_LENGTH(`column_name`) - CHAR_LENGTH(REPLACE(`column_name`, ',', '')) >= n - 1
WHERE 
`column_name` LIKE '%,%'

该语句中,大家使用 UNION ALL 操作符将两个 SELECT 语句合并为一个结果集。第一个 SELECT 语句是为了获取不包含逗号的行;第二个 SELECT 语句则是为了获取包含逗号的行,这个语句中大家使用了 UNINO ALL 操作符连接了一个由数字 1 到 4 构成的表和源表。在这个连接之后,大家使用 SUBSTRING_INDEX 函数和 WHERE 子句来对拆分后的行进行过滤。这种方式相对于使用 GROUP_CONCAT 函数,占用的系统资源较少,性能也较高。

通过上述两种方式,大家可以快速地将 MySQL 中的逗号分隔的值拆分为多行。根据实际的业务场景和查询需求,大家可以选择最适合的方式来操作数据库。


mysql根据逗号拆分为多行 |phpmysql手工注入
  • 如何用MySQL查询出相同数据 |centos mysql占用内存
  • 如何用MySQL查询出相同数据 |centos mysql占用内存 | 如何用MySQL查询出相同数据 |centos mysql占用内存 ...

    mysql根据逗号拆分为多行 |phpmysql手工注入
  • mysql cmd 新建数据库 |mysql结构体
  • mysql cmd 新建数据库 |mysql结构体 | mysql cmd 新建数据库 |mysql结构体 ...

    mysql根据逗号拆分为多行 |phpmysql手工注入
  • mysql密码策略引用密码字典 |mysql 报表设计
  • mysql密码策略引用密码字典 |mysql 报表设计 | mysql密码策略引用密码字典 |mysql 报表设计 ...