为什么sql函数全部返回计数并单选返回正确值?

时间:2019-02-27 20:32:02

标签: mysql database function

我具有可以返回所有行的函数,但是我希望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”。为什么我的功能无法正常工作?

1 个答案:

答案 0 :(得分:2)

这是因为MySQL不区分大小写,因此SIdsid是相同的名称,并且它不知道您在查询中指的是哪个,因此选择了一个(在两种情况下都是相同的),当然每一行都匹配。尝试更改您的输入参数名称:

CREATE DEFINER=`root`@`localhost` FUNCTION `IsInDatabase`(sIdin VARCHAR(21)) RETURNS tinyint(1)
BEGIN
    RETURN (SELECT COUNT(Id) FROM table WHERE SId =sIdin);
END