MySql中以逗号分隔的字符串到表中

MySql中以逗号分隔的字符串到表中,mysql,string,Mysql,String,我正在尝试使用MySql将逗号分隔的字符串转换为表结果。基本上,我是一个SQL Server用户,我不知道如何在MySql中实现同样的功能。请帮我做这个 我有一个如下所示的sting,基本上一个字符串数组包含不同的值 '45,55,65,41' 我想把它转换成一个表结果,如下所示 +---------+-----------------+ | id | value | +---------+-----------------+ | 1 |

我正在尝试使用MySql将逗号分隔的字符串转换为表结果。基本上,我是一个SQL Server用户,我不知道如何在MySql中实现同样的功能。请帮我做这个

我有一个如下所示的sting,基本上一个字符串数组包含不同的值

'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    |
+----+-------+