MySql中以逗号分隔的字符串到表中
我正在尝试使用MySql将逗号分隔的字符串转换为表结果。基本上,我是一个SQL Server用户,我不知道如何在MySql中实现同样的功能。请帮我做这个 我有一个如下所示的sting,基本上一个字符串数组包含不同的值MySql中以逗号分隔的字符串到表中,mysql,string,Mysql,String,我正在尝试使用MySql将逗号分隔的字符串转换为表结果。基本上,我是一个SQL Server用户,我不知道如何在MySql中实现同样的功能。请帮我做这个 我有一个如下所示的sting,基本上一个字符串数组包含不同的值 '45,55,65,41' 我想把它转换成一个表结果,如下所示 +---------+-----------------+ | id | value | +---------+-----------------+ | 1 |
'45,55,65,41'
我想把它转换成一个表结果,如下所示
+---------+-----------------+
| id | value |
+---------+-----------------+
| 1 | 45 |
+---------+-----------------+
| 2 | 55 |
+---------+-----------------+
| 3 | 65 |
+---------+-----------------+
| 4 | 41 |
+---------+-----------------+
怎么做 这里有一个解决方案:
DROP TEMPORARY TABLE if exists `converted_values`;
CREATE TEMPORARY TABLE `converted_values`( `id` int(11), `value` char(45) );
ALTER TABLE `converted_values` ADD PRIMARY KEY (`id`);
ALTER TABLE `converted_values` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
SET @sqlvar = CONCAT("INSERT INTO converted_values (value) VALUES ('", REPLACE('45,55,65,41', ",", "'),('"),"');");
PREPARE insert_statement FROM @sqlvar;
EXECUTE insert_statement;
SELECT * FROM converted_values;
您可以在REPLACE
函数的第5行找到逗号分隔的字符串:'45,55,65,41'
以下是一个在线工作示例:
结果:
+----+-------+
| id | value |
+----+-------+
| 1 | 45 |
+----+-------+
| 2 | 55 |
+----+-------+
| 3 | 65 |
+----+-------+
| 4 | 41 |
+----+-------+
注意:这是一个临时表,不会保存到数据库中。当然,如果您想将结果保存在数据库中的一个表中,您可以使用这部分代码:(并用表名替换表名converted\u value
)
下面是一个在线示例:您可以尝试以下方法
select distinct
n as Id,
SUBSTRING_INDEX(SUBSTRING_INDEX('45,55,65,41', ',', numbers.n), ',', -1) Value
from
(select @rownum := @rownum + 1 as n
from YourTable
cross join (select @rownum := 0) r
) numbers
order by
n
输出
+----+-------+
| ID | Value |
+----+-------+
| 1 | 45 |
+----+-------+
| 2 | 55 |
+----+-------+
| 3 | 65 |
+----+-------+
| 4 | 41 |
+----+-------+
在sql server中如何执行此操作
+----+-------+
| ID | Value |
+----+-------+
| 1 | 45 |
+----+-------+
| 2 | 55 |
+----+-------+
| 3 | 65 |
+----+-------+
| 4 | 41 |
+----+-------+