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 ;
时间: 2024-07-31 14:24:02

mysql 字符串分割 和 动态执行拼接sql的相关文章

MySQL 字符串 分割 多列

mysql如何进行以,分割的字符串的拆分 - 我有一个梦想 - CSDN博客https://blog.csdn.net/u012009613/article/details/52770567 mysql字符串分割函数(行转列) - 小草青青 - 博客园https://www.cnblogs.com/jiangwenju/p/4886066.html mysql中根据某个字符为间隔进行分列(有举例)_百度知道https://zhidao.baidu.com/question/284013200.h

mysql字符串分割函数

由于工作需要需要处理一些以逗号分隔的字符串,每次都要现做很是麻烦,网上找了很多都没有现成的,好吧,自己动手写一个好了 1 CREATE DEFINER = `harri`@`%` FUNCTION `substr_for_str`(`num` int, `str` varchar(5000)) 2 RETURNS varchar(100) 3 BEGIN 4 /*函数功能: 把带逗号的字符串分割取出 5 参数: num 要取出的字符串的索引值, 以0开始 6 str 以逗号分割的字符串 7 扩展

MySQL Transaction--查看未提交事务执行的SQL

未提交事务 长期未提交事务,指开启事务后,长时间未向MySQL发出SQL执行请求或事务处理(COMMIT/ROLLBACK)请求,在系统表`information_schema`.`INNODB_TRX` 中状态为RUNNING,而在`information_schema`.`PROCESSLIST`中状态为SlEEP. ## 查看未提交的事务(3秒内未操作的事务) SELECT p.ID AS conn_id, P.USER AS login_user, P.HOST AS login_hos

mysql function动态执行不同sql语句

create procedure cps() begin declare table_user varchar(200) default 'user'; set strSql = concat('select * from ',table_user); prepare a from strSql; execute a; end: 这个过程中会出现错误. 如何使用sql执行字符串? 需要使用prepare  预编译sql prepare a from 'select * from food'; e

shell脚本操作mysql数据库,使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改、查)等各种操作

mysql  -hhostname -Pport -uusername -ppassword  -e  相关mysql的sql语句,不用在mysql的提示符下运行mysql,即可以在shell中操作mysql的方法. #!/bin/bash HOSTNAME="192.168.111.84" #数据库信息 PORT="3306" USERNAME="root" PASSWORD="" DBNAME="test_db_

mysql字符串分割操作

SELECT '1,2,3,4,5,6,7,8' FROM dual; -- 列转行分割 SELECT DISTINCT SUBSTRING_INDEX(SUBSTRING_INDEX(a.path,',',b.help_topic_id + 1),',',-1) FROM (SELECT GROUP_CONCAT(REPLACE(path,'/',',')) AS path FROM department b WHERE department_type = 1) a JOIN mysql.he

mysql字符串分割类似split

SELECT SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX("aa,bb,cc,dd", ",", 1)), ",", 1);    #aa   SELECT SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX("aa,bb,cc,dd", ",", 2)), ",", 1);    #bb         SELECT SU

mysql 存储过程动态拼接sql并执行赋值

CREATE DEFINER = CURRENT_USER PROCEDURE `NewProc`(in _xnb varchar(50)) BEGIN ## 定义变量 DECLARE _num FLOAT(14,6) DEFAULT 0; ## @表示全局变量 相当于php $ ## 拼接赋值 INTO 必须要用全局变量不然语句会报错 SET @strsql = CONCAT('SELECT SUM(',_xnb,') INTO @tnum FROM btc_user_coin'); ## 预

Sql动态查询拼接字符串的优化

Sql动态查询拼接字符串的优化 最原始的 直接写:string sql="select * from TestTables where 1=1";... 这样的代码效率很低的,这样影响了数据库的索引引用如下所示:private void TestOneMethod()        {             string querySql = "select * from TestTables where 1=1";            if (hasOneCo