-- 示例代码:将一个包含多个值的字符串拆分成多条数据
-- 假设我们有一个表 `my_table`,其中有一列 `data_column` 存储了逗号分隔的字符串
CREATE TABLE my_table (
id INT AUTO_INCREMENT PRIMARY KEY,
data_column VARCHAR(255)
);
-- 插入一些示例数据
INSERT INTO my_table (data_column) VALUES ('apple,banana,cherry');
-- 创建一个辅助函数来拆分字符串
DELIMITER $$
CREATE FUNCTION SPLIT_STR(
x VARCHAR(255),
delim VARCHAR(12),
pos INT
)
RETURNS VARCHAR(255)
DETERMINISTIC
BEGIN
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
delim, '');
END$$
DELIMITER ;
-- 使用该函数将字符串拆分成多条记录
SELECT
id,
SPLIT_STR(data_column, ',', n.n) AS split_data
FROM
my_table,
(SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3) n
WHERE
LENGTH(data_column) - LENGTH(REPLACE(data_column, ',', '')) >= n.n - 1;
-- 解释:
-- 1. 创建了一个名为 `SPLIT_STR` 的函数,用于从给定的字符串中提取指定位置的子字符串。
-- 2. 使用一个派生表(derived table)生成行号 `n`,以便我们可以为每个逗号分隔的值分配一个编号。
-- 3. 最后,通过连接原始表和派生表,并使用 `SPLIT_STR` 函数提取每个逗号分隔的值。
上一篇:mysql 查看所有表
下一篇:mysql dblink
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站