【问题标题】:MySql return exists from function (exists and count)MySql return 从函数中存在(exists and count)
【发布时间】:2018-05-06 03:33:51
【问题描述】:

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

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。

【问题讨论】:

  • 不要为参数指定与列名相同的名称。

标签: mysql function count exists


【解决方案1】:

这是因为您的参数名称与您的列名完全相同

因此 MySQL 选择将其解释为列名,您最终会得到 where columnname = columnname ,这与始终返回 true 的 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

【讨论】:

    猜你喜欢
    • 2015-10-07
    • 1970-01-01
    • 2013-11-28
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    • 1970-01-01
    相关资源
    最近更新 更多