我想检查一行是否存在,如果不存在,则向用户返回一条消息。我做了以下测试并得到了结果:
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。
1条答案
按热度按时间6xfqseft1#
这是因为参数的命名与列名完全相同
因此,mysql选择将其解释为列名,您将得到一个
where columnname = columnname
,与where 1 = 1
总是正确的