在mySQL中循环一个可能的逗号分隔字符串

在mySQL中循环一个可能的逗号分隔字符串,mysql,Mysql,如何在MYSQL中循环使用逗号分隔的字符串 这就是我想要的 select exp from expertise where user_name = 'userName'; if exp != null then LOOP INSERT into table T1(exp1) VALUES(exp) UNTIL NO COMMA FOUND END IF; 我怎样才能做到这一点?计划A: 编写一个将解析字符串并运行INSERT语句的存储过程 方案B: 从

如何在MYSQL中循环使用逗号分隔的字符串

这就是我想要的

 select exp from expertise where user_name = 'userName';

 if exp != null then
     LOOP
       INSERT into table T1(exp1) VALUES(exp)
     UNTIL NO COMMA FOUND
 END IF;
我怎样才能做到这一点?

计划A:

编写一个将解析字符串并运行INSERT语句的存储过程

方案B:

从“exp”值生成INSERT语句字符串,并使用准备好的语句执行该语句


例如:

假设我们有一根绳子——“苹果、樱桃、草莓”。我们必须生成一个类似这样的INSERT语句-
INSERT INTO表\u名称值('apple')、('cherry')、('草莓')

计划A:

编写一个将解析字符串并运行INSERT语句的存储过程

方案B:

从“exp”值生成INSERT语句字符串,并使用准备好的语句执行该语句


例如:

假设我们有一根绳子——“苹果、樱桃、草莓”。我们必须生成一个类似这样的INSERT语句-
INSERT INTO表\u名称值('apple')、('cherry')、('草莓')


我不太清楚你说的“没有逗号”是什么意思。你能澄清一下吗?另外,我认为您需要重复而不是循环:这个查询没有意义。什么是exp1?为什么要在单独的表中多次插入用户名?为什么用户名字段包含CSV?如何使用REPEAT。。我想循环一个字符串(逗号分隔),并将其插入表中。因此,如果有10个单词,用逗号分隔,那么必须在数据库中插入10条记录。此外,当未找到逗号时,它必须停止插入到表中。首先,不应存储逗号分隔的列表。如果您规范化了表格设计,则无需使用此clude我知道:-(…但我需要添加用户在屏幕上输入的内容,这将是一个逗号分隔的字符串。我将其添加到临时表中,以便我可以对此进行搜索,然后将其删除。我只想知道如何循环使用逗号分隔的字符串我不完全确定“未找到逗号”是什么意思。您能澄清一下吗?另外,我认为您希望重复而不是循环:此查询没有意义。什么是exp1?为什么您希望在单独的表中多次插入用户名?为什么用户名字段包含CSV?如何使用重复..我希望循环字符串(逗号分隔),并将其插入表中。因此,如果有10个用逗号分隔的单词,则必须将10条记录插入数据库中。此外,如果找不到逗号,则必须停止插入表中。首先不应存储逗号分隔的列表。如果规范化表设计,则无需使用此clude。我知道:-(…但我需要添加用户在屏幕上输入的内容,这将是一个逗号分隔的字符串。我将其添加到临时表中,以便我可以对此进行搜索,然后将其删除。我只想知道如何通过逗号分隔的字符串进行循环如果字符串中有5个以逗号分隔的单词,则需要在表中插入5条记录,这5个单词。我需要循环遍历这个字符串,如果它存在,我意识到,我不知道将有多少个插入。在上面的示例中,有一个固定的数字=3。我可以有一个未知的数量。我如何确定这一点?这不重要。只需检查结果查询长度。查询的大小不应超过
ma允许x__数据包
。Im丢失:-(…您的示例中的语法正确吗,因为我无法正确理解..table_name也是我这边的一个变量,所以我使用@table_name没有问题。我已经更改了答案。您还可以编写“SELECT@query”来查看结果查询。如果字符串中有5个单词以逗号分隔,则需要在表中插入5条记录,这5条记录包含在表中rds。我需要循环遍历这个字符串,如果它存在,我意识到,我不知道将有多少个插入。在上面的示例中,有一个固定的数字=3。我可以有一个未知的数量。我如何确定这个?这不重要。只需检查结果查询长度。查询的大小不应该超过
max\u allowed\u packet
.Im lost:-(…在您的示例中语法是否正确,因为我无法正确理解..table\u name在我这边也是一个变量,因此我使用@table\u name没有问题。我已更改了答案。您还可以编写“SELECT@query”来查看结果查询。
-- build a query
SET @table_name = 'table1';
SET @words = 'apple,cherry,strawberry';
SET @query = CONCAT('INSERT INTO ', @table_name, ' VALUES(\'',  REPLACE(@words, ',', '\'),(\''), '\')');

-- run the query
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;