mysql 循环字符串_mysql – 循环逗号分隔字符串的过程无效

我已经在堆栈溢出给出的答案的帮助下纠正了代码.我想循环逗号分隔的ID字符串但不能这样做.下面给出的程序只更新第一条记录而不更新其他记录.需要进行哪些更正,以便我可以循环逗号分隔的字符串.

这是我的SP的代码

BEGIN

DECLARE strLen INT DEFAULT 0;

DECLARE SubStrLen INT DEFAULT 0;

IF strIDs IS NULL THEN

SET strIDs = '';

END IF;

do_this:

LOOP

SET strLen = LENGTH(strIDs);

UPDATE TestTable SET status = 'C' WHERE Id = SUBSTRING_INDEX(strIDs, ',', 1);

SET SubStrLen = LENGTH(SUBSTRING_INDEX(strIDs, ',', 1));

SET strIDs = MID(strIDs, SubStrLen, strLen);

IF strIDs = NULL THEN

LEAVE do_this;

END IF;

END LOOP do_this;

END

代码如此帖子的答案中所提供.

我尝试使用find_in_set()函数,但只有当我从开始时传递id并且如果我随机传递ID时不工作它才有效.

这是我的表格脚本

CREATE TABLE `testtable` (

Id int(11)DEFAULT NULL,

????状态varchar(255)COLLATE utf8_unicode_ci DEFAULT NULL

????)ENGINE = MyISAM DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci;

-- ----------------------------

-- Records of testtable

-- ----------------------------

INSERT INTO `testtable` VALUES ('1', 'O');

INSERT INTO `testtable` VALUES ('2', 'O');

INSERT INTO `testtable` VALUES ('3', 'O');

INSERT INTO `testtable` VALUES ('4', 'O');

INSERT INTO `testtable` VALUES ('5', 'O');

这是存储过程

????开始

??????UPDATE TestTable SET status =’C’WHERE Id = FIND_IN_SET(Id,strIDs);

????结束

strIds是varchar类型.

现在试试@ strIDs =’2′

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值