mysql 字符串分割 和 动态执行拼接sql

Posted dz45693

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 字符串分割 和 动态执行拼接sql相关的知识,希望对你有一定的参考价值。

本人以前主要用的是MSSQL,最近项目在使用mysql,自己是一个 典型的小白。今天就记录一下 一个mysql存储过程,里面需要分割字符串和 动态执行sql语句。

关于字符串 分割我开始使用 LOCATE 和Position来做,不知道在proc 里面有时候报错,单独的查询有可以。后来在网上 找了一个 Mysql存储过程中字符串分割文章, 很多地方都推荐使用  SET @result = REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(plate_sku_name,‘,‘,i)),‘,‘,1));   

至于执行sql 则需要  PREPARE sql1 FROM @sql1;  EXECUTE sql1;   感觉也比MSSQL复杂。

DELIMITER $$   
  
DROP PROCEDURE IF EXISTS simple_while$$   
  
CREATE PROCEDURE simple_while(IN period_no VARCHAR(7), IN all_test_id TEXT, OUT return_count INT)  
BEGIN   
  SET return_count=0;
  SET @i=0;
  SET @arraylength=1+(LENGTH(all_test_id) - LENGTH(REPLACE(all_test_id,,,‘‘)));  
    WHILE @i<@arraylength  
        DO  
        SET @i[email protected]+1;  
        SET @result = REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(all_test_id,,,@i)),,,1));   
        SET @sql=CONCAT(Update test_,period_no, Set is_cancel = 1 WHERE all_test_id = ,@result);
       PREPARE sql1 FROM @sql;  
       EXECUTE sql1;  
       SET return_count=return_count+ ROW_COUNT();
    END WHILE;    
      
END$$
  
DELIMITER ;

 

以上是关于mysql 字符串分割 和 动态执行拼接sql的主要内容,如果未能解决你的问题,请参考以下文章

动态执行SQL语句,拼接字符串,select中带有一个变量

mysql 动态sql的拼接以及执行分页

MySQL的sql语句如何将一列数据拼接成一个字符串?

字段是多个值拼接的,怎么一一取出来

拼接字符串SQL需求

sql语句拼接