mysql拆分字符串为多列
时间: 2024-10-28 20:03:30 浏览: 36
mysql将字符串分割成多列值
3星 · 编辑精心推荐
MySQL 中可以使用 `UNNEST()` 函数或者 `STRING_SPLIT()` 函数将字符串拆分成多行数据,以便作为多列插入到表中。以下是两种方法:
1. 使用 `UNNEST()` 函数 (MySQL 8.0 及以上):
```sql
CREATE TABLE your_table (
id INT PRIMARY KEY,
multi_columns STRING(255)
);
INSERT INTO your_table (id, multi_columns) VALUES
(1, 'column1_value,column2_value,column3_value');
SELECT id,
unnest(SPLIT(multi_columns, ',')) AS column1,
unnest(SPLIT(multi_columns, ',')) AS column2,
unnest(SPLIT(multi_columns, ',')) AS column3
FROM your_table;
```
在这个例子中,`multi_columns` 列会按照逗号分割成三列。
2. 使用 `STRING_SPLIT()` 函数 (MySQL 5.7 - 8.0):
```sql
CREATE TABLE your_table (
id INT PRIMARY KEY,
multi_columns TEXT
);
INSERT INTO your_table (id, multi_columns) VALUES
(1, '{"column1_value","column2_value","column3_value"}');
SET @s = CONCAT('(', REPLACE(multi_columns, ',', '),('), ')');
SELECT id,
SUBSTRING_INDEX(SUBSTRING_INDEX(@s, ',', n.n), ',', -1) as column
FROM your_table
CROSS JOIN UNNEST(sequence(1, LENGTH(@s) - length(REPLACE(@s, ',', '')) + 1)) AS n(n);
```
这个查询使用了用户变量和递归函数来达到类似的效果。
阅读全文