mysql返回exists from函数(exists和count)

q5iwbnjs  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(502)

我想检查一行是否存在,如果不存在,则向用户返回一条消息。我做了以下测试并得到了结果:

CREATE DEFINER=`root`@`localhost` FUNCTION `ud_fnc_DoesUserNameExist`(userName varchar(200)) RETURNS int(11)
    BEGIN

    return exists(select `Id` from `ud_tbl_User` where `userName` = userName);

    END

即使值不存在,此函数也返回1。

CREATE DEFINER=`root`@`localhost` FUNCTION `ud_fnc_DoesUserNameExist`(userName varchar(200)) RETURNS int(11)
    BEGIN

    return (select count(`Id`) from `ud_tbl_User` where `userName` = userName);

    END

即使值不存在,此函数也返回1。

6xfqseft

6xfqseft1#

这是因为参数的命名与列名完全相同
因此,mysql选择将其解释为列名,您将得到一个 where columnname = columnname ,与 where 1 = 1 总是正确的

CREATE DEFINER=`root`@`localhost` FUNCTION `ud_fnc_DoesUserNameExist`(myUserName varchar(200)) RETURNS int(11)
    BEGIN

    return exists(select `Id` from `ud_tbl_User` where `userName` = myUserName);

    END

相关问题