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