简体   繁体   English

如何在存储过程中使用单引号传递输入参数

[英]how can i pass input parameter with single quote in Stored Procedure

i have a stored procedure r, i'm passing the below string but it's not working??我有一个存储过程 r,我正在传递下面的字符串,但它不起作用??

call Prc_SearchKeyword('randomize', "'girl', 'playing'",2,0,31);

the below syntax is working fine..下面的语法工作正常..

call Prc_SearchKeyword('randomize', 'girl',1,0,31);



DELIMITER $$

CREATE PROCEDURE `Prc_SearchKeyword`(IN filter VARCHAR(50), IN midquery varchar(200), IN keywordcount int(10), In firstimage int(10), in lastimage int(10) )
BEGIN
IF(filter = 'nbofviews') Then
SELECT sd.imageid, sd.imgcollection, sd.Caption FROM   (SELECT p.imageid  FROM searchinitial_views p join searchkwdmgmt s on p.primarykeyword = s.primary_kwd and s.allkwd in (midquery) GROUP  BY p.imageid HAVING Count(distinct p.primarykeyword) = keywordcount order by views desc  LIMIT  firstimage, lastimage ) q join searchdetails sd ON sd.imageid = q.imageid ;
END IF;
IF(filter = 'shootdate') Then
SELECT sd.imageid, sd.imgcollection, sd.Caption FROM   (SELECT p.imageid  FROM searchinitial_shootdate p join searchkwdmgmt s on p.primarykeyword = s.primary_kwd and s.allkwd in (midquery) GROUP  BY p.imageid HAVING Count(distinct p.primarykeyword) = keywordcount order by shootdate desc  LIMIT  firstimage, lastimage ) q join searchdetails sd ON sd.imageid = q.imageid ;
END IF;
IF(filter = 'randomize') Then
SELECT sd.imageid, sd.imgcollection, sd.Caption FROM   (SELECT p.imageid  FROM searchinitial_random p join searchkwdmgmt s on p.primarykeyword = s.primary_kwd and s.allkwd in (midquery) GROUP  BY p.imageid HAVING Count(distinct p.primarykeyword) = keywordcount order by random desc  LIMIT  firstimage, lastimage ) q join searchdetails sd ON sd.imageid = q.imageid;
END IF;
IF(filter = 'priority') Then
SELECT sd.imageid, sd.imgcollection, sd.Caption FROM   (SELECT p.imageid  FROM searchinitial_priority p join searchkwdmgmt s on p.primarykeyword = s.primary_kwd and s.allkwd in (midquery) GROUP  BY p.imageid HAVING Count(distinct p.primarykeyword) = keywordcount order by priority desc  LIMIT  firstimage, lastimage ) q join searchdetails sd ON sd.imageid = q.imageid ;
END IF;
END

您需要查找如何转义字符,即使用两个单引号而不是一个''girl'',''playing''

You can escape single quotes with two single quotes: for example:您可以使用两个单引号转义单引号:例如:

... where lastname='O''Malley'

in your case:在你的情况下:

''girl'',''playing''

Since MySQL recognizes both single and double quotes as string delimiters, one option is to use double quotes when you want to include single quotes in the value, or vice versa.由于 MySQL 将单引号和双引号都识别为字符串分隔符,因此一种选择是在值中包含单引号时使用双引号,反之亦然。

call YourProc("'girl', 'playing'");

The alternative is to escape the quotes with backslash:另一种方法是用反斜杠转义引号:

call YourProc('\'girl\', \'playing\'');

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM