可以使用MySQL内置函数SUBSTRING_INDEX和UNION ALL实现将一个字段以逗号拼接的字符串拆分成多行记录,具体实现如下:

假设有一张表test,其中字段str的格式为字符串,多个元素以逗号拼接:

CREATE TABLE test (
  id INT(11) NOT NULL AUTO_INCREMENT,
  str VARCHAR(255) NOT NULL,
  PRIMARY KEY (id)
);

INSERT INTO test (str) VALUES ('a,b,c'), ('d,e,f,g'), ('h,i');

使用SUBSTRING_INDEX函数将字符串拆分成多行记录:

SELECT SUBSTRING_INDEX(str, ',', 1) AS str FROM test
UNION ALL
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(str, ',', 2), ',', -1) AS str FROM test
UNION ALL
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(str, ',', 3), ',', -1) AS str FROM test
...

其中,SUBSTRING_INDEX(str, ',', n)表示将str以逗号为分隔符,取第n个元素之前的所有内容;SUBSTRING_INDEX(SUBSTRING_INDEX(str, ',', n), ',', -1)表示将str以逗号为分隔符,取第n个元素之后的所有内容。通过不断改变n的值,可以将一个拼接的字符串拆分成多行记录。最终的结果如下:

+------+
| str  |
+------+
| a    |
| d    |
| h    |
| b    |
| e    |
| i    |
| c    |
| f    |
| g    |
+------+
mysql某个字段的格式为字符串多个元素以拼接。将他拆分开为多行记录

原文地址: https://www.cveoy.top/t/topic/bYeD 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录