You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL存储过程查询用户时邮箱匹配条件失效问题求助

问题解决:MySQL存储过程邮箱匹配条件失效的修复

你的问题核心是存储过程的参数没有被正确引用——在IN子句里,你写的是固定字符串"usertodisable@xxx.com",MySQL会把它当成字面量,而不是用传入的参数值替换usertodisable部分。比如调用CALL CheckUserDisable('abc');时,实际是在找邮箱等于"usertodisable@xxx.com"的记录,而非"abc@xxx.com",所以匹配不到目标数据。

修复方案

使用CONCAT()函数将参数与域名动态拼接成完整邮箱地址,修正后的存储过程代码如下:

DELIMITER //
CREATE PROCEDURE CheckUserDisable(IN usertodisable VARCHAR(64))
BEGIN
    SELECT str_id, email1, email2 
    FROM CI_CONTACTS c 
    WHERE c.str_id = usertodisable 
        OR c.email1 IN (
            CONCAT(usertodisable, '@yyy.com'),
            CONCAT(usertodisable, '@xxx.com'),
            CONCAT(usertodisable, '@xyz.com')
        )
        OR c.email2 IN (
            CONCAT(usertodisable, '@yyyyy.com'),
            CONCAT(usertodisable, '@xxxxx.com'),
            CONCAT(usertodisable, '@abc.com')
        );
END //
DELIMITER ;

验证说明

当你再次调用CALL CheckUserDisable('abc');时,CONCAT()会自动将参数'abc'与各域名拼接成abc@yyy.com、abc@xxx.com等完整邮箱,此时就能匹配到表中email1为abc@xxx.com的记录了。

另外需要确认:

  • 参数usertodisable的长度VARCHAR(64)足够容纳传入的用户名,避免拼接时被截断
  • 表中email1、email2字段的类型与拼接后的字符串类型兼容

内容的提问来源于stack exchange,提问作者Ganesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 18:09:24