Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

mysql字符串拆成多条数据

作者:夏威夷丶霪男   发布日期:2026-03-24   浏览:104

-- 示例代码:将一个包含多个值的字符串拆分成多条数据

-- 假设我们有一个表 `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

大家都在看

mysqlavg函数保留小数

mysql显示表内容

mysql经纬度距离计算

mysql 加密

存储过程mysql

mysql 1265

mysql with语句

mysql时间加减

mysql查询表名,模糊匹配

brew 启动mysql

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站