Почему функция sql возвращает счетчик всех и одиночный выбор возвращает правильное значение? - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть функция, которая будет возвращать все строки, но я ожидаю 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 голосов
/ 27 февраля 2019

Это потому, что 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...