版权声明: 转载请注明出处!本文采用 知识共享 署名-非商业性使用-禁止演绎 4.0 国际许可协议
代码中常常应到字符串的分割,其实有时数据库中的数据也需要进行字符串分割,比如按用户名查找用户信息,如果是传入一个用户名当然好实现,若是想要一次传入多个用户名则需要考虑一下,传入多个参数当然是不现实的,如果把多个用户名合并到一个字符串中,用都好分割开来,是一个不错的选择,所以可以使用CONCAT,substring,INSTR等函数配合使用来达到目的,实例代码如下:
DROP PROCEDURE IF EXISTS TestSubString;
CREATE PROCEDURE TestSubString (IN paramAccount VARBINARY(512))
BEGIN
SET @result = 1;
SET @paramAccountNames = paramAccount;
SET @run = 1;
SET @querySql ='';
WHILE( @run = 1) DO
SET @dotIndex= INSTR(@paramAccountNames,',');
IF(@dotIndex = 0) THEN
BEGIN
SET @userId = @paramAccountNames;
SET @run=0;
SET @querySql = CONCAT(@querySql,' AccountName=\'', @userId, '\'');
END;
ELSE
BEGIN
SET @userId = substring(@paramAccountNames,1,@dotIndex-1);
SET @paramAccountNames=substring(@paramAccountNames,@dotIndex+1,
LENGTH(@paramAccountNames));
SET @querySql = CONCAT(@querySql,' AccountName=\'', @userId, '\'', ' or');
END;
END IF;
END WHILE;
SET @prepareStatement = CONCAT('SELECT AccountName as id, Level FROM accountinfo WHERE ',
@querySql, ' order by id;');
PREPARE stmt FROM @prepareStatement;
EXECUTE stmt ;
SELECT @prepareStatement;
SELECT @querySql;
SET @result = 1;
END
最后修改时间:2019-11-21 22:58:59
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。