我具有可以返回所有行的函数,但是我希望0或1是因为Sid是唯一的:
CREATE DEFINER=`root`@`localhost` FUNCTION `IsInDatabase`(sId VARCHAR(21)) RETURNS tinyint(1)
BEGIN
RETURN (SELECT COUNT(Id) FROM table WHERE SId =sid);
END
直接执行时,
SELECT COUNT(Id) FROM table WHERE SId ='87882118'
将完全返回我需要的内容:“ 1”或“ 0”。为什么我的功能无法正常工作?
答案 0 :(得分:2)
这是因为MySQL不区分大小写,因此SId
和sid
是相同的名称,并且它不知道您在查询中指的是哪个,因此选择了一个(在两种情况下都是相同的),当然每一行都匹配。尝试更改您的输入参数名称:
CREATE DEFINER=`root`@`localhost` FUNCTION `IsInDatabase`(sIdin VARCHAR(21)) RETURNS tinyint(1)
BEGIN
RETURN (SELECT COUNT(Id) FROM table WHERE SId =sIdin);
END