Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql过程无法搜索表中的2列值?_Mysql - Fatal编程技术网

mysql过程无法搜索表中的2列值?

mysql过程无法搜索表中的2列值?,mysql,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', '

我编写了如下查询:

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
//
它工作正常。与我使用存储过程编写的相同,如下所示:

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
//
它正在执行,但在调用过程时显示如下错误:

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
//
致电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(“科学”)
定义变量
@c
,但使用
c
。您错过了
@

但为什么不呢

select * from c_course 
where cdesc LIKE CONCAT('%',sname,'%')
OR cname LIKE CONCAT('%',sname,'%');
看看你的例子,你甚至可以

select * from c_course 
where sname in (cdesc, cname)

这在性能上比通配符搜索要好得多。

使用lportal;致电pro_search143(科学);“归档列表”中的未知专栏“科学”,我已经尝试了美国援助不起作用的内容,与call pro_search143(“科学”)再次出现相同的错误;我试过了,但它没有显示任何列表。就像空列表一样,我试过了!它还显示了相同的东西,同时通过了显示字段列表中未知列science的science