首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在存储过程中传递带有单引号的输入参数

如何在存储过程中传递带有单引号的输入参数
EN

Stack Overflow用户
提问于 2013-09-14 12:39:52
回答 3查看 10.5K关注 0票数 1

我有一个存储过程r,我正在传递下面的字符串,但它不工作??

代码语言:javascript
复制
call Prc_SearchKeyword('randomize', "'girl', 'playing'",2,0,31);

下面的语法运行良好。

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

发布于 2013-09-14 12:43:37

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

票数 0
EN

Stack Overflow用户

发布于 2013-09-14 12:46:04

您可以使用两个单引号来转义单引号:例如:

代码语言:javascript
复制
... where lastname='O''Malley'

在您的案例中:

代码语言:javascript
复制
''girl'',''playing''
票数 0
EN

Stack Overflow用户

发布于 2013-09-14 12:43:37

由于MySQL将单引号和双引号都识别为字符串分隔符,因此当您希望在值中包含单引号时,一种选择是使用双引号,反之亦然。

代码语言:javascript
复制
call YourProc("'girl', 'playing'");

另一种方法是使用反斜杠对引号进行转义:

代码语言:javascript
复制
call YourProc('\'girl\', \'playing\'');
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18798353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档