voucher表里有数据  id677
678
679
680CREATE DEFINER=`root`@`localhost` PROCEDURE `account_post_voucher`(vchID varchar(255))
BEGINselect id from voucher  where id in (vchID) ;END;
call account_post_voucher('677,678,679') ;
在SQL编辑器里执行的结果是  677  
没有显示到 678,679 而在SQL编辑器直接执行  select id from voucher  where id in (677,678,679);
显示结果 677,678,679 结果正常 为什么会这样的? 参数编码有问题?

解决方案 »

  1.   

     where id in (vchID) ; 后并不支持这种IN后的变量字符串,它只会相关于 vchID 的一个值即 '677,678,679' ,MYSQL并不把这个当成多个值 677,678,679你的语句改为 
    select id from voucher  where FIND_IN_SET(id,vchID);
      

  2.   

    顶楼上,用FIND_IN_SET,locate,instr 这些函数都可以
      

  3.   

    或者拼接动态的
    set @sql=concat('select id from voucher where id in (''',vchID,''')');
    prepare stmt from  @sql;
    execute stmt;