[英]how can i pass input parameter with single quote in Stored Procedure
我有一個存儲過程 r,我正在傳遞下面的字符串,但它不起作用??
call Prc_SearchKeyword('randomize', "'girl', 'playing'",2,0,31);
下面的語法工作正常..
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''
您可以使用兩個單引號轉義單引號:例如:
... where lastname='O''Malley'
在你的情況下:
''girl'',''playing''
由於 MySQL 將單引號和雙引號都識別為字符串分隔符,因此一種選擇是在值中包含單引號時使用雙引號,反之亦然。
call YourProc("'girl', 'playing'");
另一種方法是用反斜杠轉義引號:
call YourProc('\'girl\', \'playing\'');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.