mysql 程序无法在表中搜索 2 列值?

标签 mysql

我已经编写了这样的查询:

select * from c_course where c_course.cdesc LIKE CONCAT('%',"science",'%')
OR  c_course.cname LIKE CONCAT('%',"science",'%');
cid     cname      cdesc      sdate         edate
'301', 'physics', 'science', '2013-01-03', '2013-01-06'
'303', 'chemistry', 'science', '2013-01-09', '2013-01-09'
'501', 'science', 'natural science', '2013-01-31', '2013-01-09'

它工作正常。我也使用这样的存储过程编写了相同的内容:

use lportal;
delimiter //
create procedure pro_search143(IN sname varchar(20))
begin

SET @c = CONCAT('"',sname,'"');

select * from c_course where 

c_course.cdesc LIKE CONCAT('%',c,'%')
OR 
c_course.cname LIKE CONCAT('%',c,'%');

end
//

它正在执行,但在调用过程时它显示如下错误:

CALL pro_search143("科学"); c where 子句中的未知列。

有人可以修改我的代码并给出解决方案吗?

最佳答案

可能是这样的:

 use lportal;
 delimiter //
 create procedure pro_search143(IN sname varchar(20))
 begin

 SET @query = concat('select * 
                      from c_course 
                      where c_course.cdesc LIKE CONCAT(''%'',''',sname,''',''%'') 
                         OR c_course.cname LIKE CONCAT(''%'',''',sname,''',''%'');
                     ');

 PREPARE stmt FROM @query;
 EXECUTE stmt;

 end //

并使用:调用 pro_search143("science")

关于mysql 程序无法在表中搜索 2 列值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18545715/

相关文章:

php - 检测 MySQL 数据库中更新的行是否已更改

java - hibernate 保存实体

带有左外连接的php mysql

php - INSERT 上的 SQL 注入(inject)

php - SQL INTO 给出错误作为 INTO 表 - 未定义

php - 如何在 laravel 查询构建器或 Eloquent 两个表中按 created_at 列计算行数?

Mysql 更改查询计划类型

php - MySQL LIKE 查询不工作

python - 从 BLOB mysql python 写入文件

MySQL 用空格连接列