mysql 实现 regexp_split_to_table
时间: 2023-12-21 15:04:21 浏览: 477
在 MySQL 中,可以使用正则表达式函数 REGEXP_SUBSTR()
和字符串函数 SUBSTRING_INDEX()
来实现 regexp_split_to_table()
的功能。
下面是一种实现方式:
假设要将字符串 '1,2,3,4,5'
按逗号分隔成多行数据,可以使用以下 SQL 语句:
SELECT REGEXP_SUBSTR('1,2,3,4,5', '[^,]+', 1, n) AS value
FROM (
SELECT 1 + (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS) AS n
FROM INFORMATION_SCHEMA.COLUMNS
) numbers
WHERE value IS NOT NULL;
解释一下上面的 SQL 语句:
INFORMATION_SCHEMA.COLUMNS
是一个系统表,里面包含了当前数据库中所有表的列信息;SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
返回的是当前数据库中所有表的列数之和;1 + (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS)
得到的是一个数字,用于控制REGEXP_SUBSTR()
函数匹配的次数;REGEXP_SUBSTR('1,2,3,4,5', '[^,]+', 1, n)
表示从字符串'1,2,3,4,5'
中匹配第n
个不包含逗号的子串;WHERE value IS NOT NULL
是为了过滤掉匹配结果中的空值。
运行以上 SQL 语句,输出结果如下:
value
-----
1
2
3
4
5
可以看到,字符串 '1,2,3,4,5'
已经按逗号分隔成了多行数据。
相关推荐


















