MySQL v5.6.17。我在步骤时遇到错误的语法错误(通用错误1064 - '脚本行:33您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册语法在第1行附近使用声明x int' &#34)。我已经看过其他做法的例子,但是逐步执行这些代码甚至没有做到这一点。很疑惑。我也很感激有关这种方法是否最有效的任何建议。基本上我需要循环遍历split_col_table数千行,查看包含分隔值的DelimitedCol列,并将每个分隔值删除到单独的ROW到报表中,然后我从split_col_table中删除前一个值和分隔符,直到没有分隔符为止。最后,我将进行最后一次传递,以便在split_col_table中从DelimitedCol中获取剩余的值。
与循环相关的代码:
declare x int;
set x = select count(*) from split_col_table where DelimitedCol like '%;%';
while x > 0 DO
INSERT INTO report (SELECT id, val1,LEFT(DelimitedCol,LOCATE(';',DelimitedCol)-1) FROM split_col_table where DelimitedCol like '%;%');
UPDATE split_col_table SET DelimitedCol = RIGHT(DelimitedCol, LENGTH(DelimitedCol)- LOCATE(';',DelimitedCol)) where DelimitedCol > '';
#repeat until no more ';' in split_col_table
set x = select count(*) from split_col_table where DelimitedCol like '%;%';
end while;