我想检查行是否存在,如果不存在,则向用户返回一条消息。下面是我做的测试和我得到的结果:
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。
发布于 2018-05-06 16:32:10
这是因为您的参数名称与您的列名完全相同
因此,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);
ENDhttps://stackoverflow.com/questions/50196020
复制相似问题