gpt4 book ai didi

mysql - 使用分隔符将一列拆分为三个单独的列

转载 作者:行者123 更新时间:2023-11-29 12:35:32 25 4
gpt4 key购买 nike

我在表的一列中有值例如:Abc-a,d,f,g,h;Acd-b,h,i,j;Asx-i,k,l,m

现在我想要的是我需要将值 a、d、f、g、h 复制到名为“Abc”的单独列中,类似地将 b、h、i、j 复制到另一列“Acd”中(增加清晰度上述一点,我希望所有逗号分隔的值都位于单独的列下,并且列名称将是在“-”之前添加前缀的字符串)。我应该使用分隔符“;”进行分割

最佳答案

首先,永远不要将数据存储为逗号分隔值,这是一种不好的做法,您应该始终标准化数据

现在就您当前的情况而言,如果模式相同,您可以使用 substring_index() 函数提取如下数据

mysql> select substring_index(substring_index('Abc-a,d,f,g,h;Acd-b,h,i,j;Asx-i,k,l,m',';',1),'Abc-',-1) as Abc ;
+-----------+
| Abc |
+-----------+
| a,d,f,g,h |
+-----------+

mysql> select substring_index(substring_index('Abc-a,d,f,g,h;Acd-b,h,i,j;Asx-i,k,l,m',';',2),'Acd-',-1) as Acd;
+---------+
| Acd |
+---------+
| b,h,i,j |
+---------+

mysql> select substring_index(substring_index('Abc-a,d,f,g,h;Acd-b,h,i,j;Asx-i,k,l,m',';',-1),'Asx-',-1) as Asx;
+---------+
| Asx |
+---------+
| i,k,l,m |
+---------+

最后将所有内容放在一起,您可以将更新命令设置为

update your_table
set
Abc = substring_index(substring_index('Abc-a,d,f,g,h;Acd-b,h,i,j;Asx-i,k,l,m',';',1),'Abc-',-1),
Acd = substring_index(substring_index('Abc-a,d,f,g,h;Acd-b,h,i,j;Asx-i,k,l,m',';',2),'Acd-',-1),
Asx = substring_index(substring_index('Abc-a,d,f,g,h;Acd-b,h,i,j;Asx-i,k,l,m',';',-1),'Asx-',-1) ;

请注意,我在上面的示例中添加了完整的字符串,您可以只添加存储值的列名称

关于mysql - 使用分隔符将一列拆分为三个单独的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26838961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com