为什么sql函数返回全部计数和单选返回正确值? [英] Why sql function return count of all and single select return correct value?

查看:43
本文介绍了为什么sql函数返回全部计数和单选返回正确值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我具有可以返回所有行的函数,但是我希望0或1是因为Sid是唯一的:

I have function that will return all of rows, but I expect 0 or 1 because Sid is unique:

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".为什么我的功能不能正常工作?

will return exactly what I need: '1' or '0'. Why is my function not working properly ?

推荐答案

这是因为MySQL不区分大小写,因此 SId sid 是相同的名称,不知道您要在查询中指的是哪一个,因此它会选择一个(在两个实例中都是相同的),并且当然每行都会匹配.尝试更改您的输入参数名称:

It's because MySQL is not case sensitive and so SId and sid are the same name, and it doesn't know which one you are referring to in the query, so it picks one (the same one in both instances) and of course it matches for every row. Try changing your input parameter name:

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

这篇关于为什么sql函数返回全部计数和单选返回正确值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆