首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有存储过程的“where子句”中的未知列

带有存储过程的“where子句”中的未知列
EN

Stack Overflow用户
提问于 2012-01-18 22:38:14
回答 2查看 1.7K关注 0票数 0

我正在使用一个带有预准备语句的存储过程来从电子邮件地址字符串中查找行。

它看起来是这样的:

分隔符$$

代码语言:javascript
复制
CREATE DEFINER=`root`@`localhost` PROCEDURE `get_users_by_email`(IN emailString VARCHAR(100))
BEGIN
    SET @sql = CONCAT('SELECT user_id FROM users WHERE user_email IN  (',emailString,')');
    PREPARE qry FROM @sql;
    EXECUTE qry;
END

然后,我使用以下命令调用该过程:

CALL get_users_by_email('me@email.com,you@email.com, etc..');

但是,我收到这个错误:

Unknown column in 'me@email.com' in 'where clause'

如果我使用该查询查找数值,则该查询可以工作,例如:

CALL get_users_by_email('123,456');

你知道为什么它会在字母数字值上出错吗?当查询从准备好的语句和过程中取出时,它可以正常工作。

EN

Stack Overflow用户

回答已采纳

发布于 2012-01-18 22:39:25

您的电子邮件地址周围需要字符串分隔符:

代码语言:javascript
复制
SET @sql = CONCAT('SELECT user_id FROM users WHERE user_email IN  (''',emailString,''')');
票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8911946

复制
相关文章

相似问题

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