存储过程中有个查询需要用 in 来查询,里面字符已参数传递进来
CREATE PROCEDURE `myTest`(str1 varchar(200))
BEGIN
select str1;
select * from table where str1 in (str1);
END;1:call myTest('abc'); ok ,没问题,当我吧参数拼装到多个之后,就不行了,例如('abc,def')或者("'abc','def'");如下
2:call myTest("'abc','def'");call myTest('abc,def');都不行,我直接select * from table where str1 in ('abc','def'); 这样是可以的有人知道,是咋回事吗,这个问题我今天弄了一下午了,始终没能解决掉,希望大家能指点我下,谢过了!
CREATE PROCEDURE `myTest`(str1 varchar(200))
BEGIN
select str1;
select * from table where str1 in (str1);
END;1:call myTest('abc'); ok ,没问题,当我吧参数拼装到多个之后,就不行了,例如('abc,def')或者("'abc','def'");如下
2:call myTest("'abc','def'");call myTest('abc,def');都不行,我直接select * from table where str1 in ('abc','def'); 这样是可以的有人知道,是咋回事吗,这个问题我今天弄了一下午了,始终没能解决掉,希望大家能指点我下,谢过了!
解决方案 »
- mysql用来存放上创的图片,视频文件,文档要用哪些类型的变量?
- mysql没有row_number()方法
- 新手请教,mysql创建触发器语法错误
- xtrabackup1.6.0增量备份的重大缺陷如何纠正?
- 求问mysql update内部工作机制
- mysql外键设置问题,触发事件ON DELETE 如何设置为SET DEFAULT
- 请教关于Mysql数据库比较Date类型的问题
- mysql c api 处理事务
- MYSQL4 有没有能存999,999,000这样格式的方法.而且要能计算的!
- 如何在windows xp下建立myssql的数据源?
- 当记录为空时如何虚拟一笔记录
- 启用log-bin = mysql-bin之后发现日志增长太快
set @v_sql = concat('select * from table where str1 in (', i_param,')'); ---i_param= 'abc','def'
prepare stmt from @v_sql;
execute stmt;
BEGIN
select v_str1;
select * from table where FIND_IN_SET(str1,v_str1)
END;
set @v_sql = concat('select * from tt where str1 in (', i_param,')');
prepare stmt from @v_sql;
execute stmt;2、用FIND_IN_SET OR INSTR函数
select * from table where FIND_IN_SET(str1,v_str1)
select * from table where instr(str1,v_str1)
set @sql=concat='select IFNULL(str1,'') from table'; concat'被IFNULL给截断了, 不知道有何方方法?
用两个空格 OR * 均可
用两个空格 OR * 均可