这个查询`相同的MySQL查询在MySQL Workbench中比命令行
delimiter $$
CREATE DEFINER=`root`@`localhost` FUNCTION `calculatePrice`(cheese VARCHAR(50), meat VARCHAR(50), veg VARCHAR(50)) RETURNS decimal(10,0)
DETERMINISTIC
BEGIN
DECLARE price DECIMAL;
SET price = (SELECT SUM(x.Price)
FROM
(
SELECT `priceFactor` AS Price FROM `tblCheese` WHERE `cheeseName` = cheese
UNION ALL
SELECT `priceFactor` AS Price FROM `tblMeat` WHERE `meatName` = meat
UNION ALL
SELECT `priceFactor` AS Price FROM `tblVeggie` WHERE `veggieName` = veg
) x);
RETURN price;
END$$
`
将返回从MySQL命令行客户端调用的时候,数学上正确的答案返回不同的结果,但不正确的任何其他程序或从PHP调用时(它的存在返回3,无论是参数传递的。)请参见下面:
调用语句,如果它是模糊的,就是选择calculatePrice(“科尔比”,“香肠”,'黑豆');
我从来没有见过这种古怪。这一切都是关于MySQL的同一副本等。
编辑以添加:phpMyAdmin也会为查询生成正确的答案。
看起来它正在返回8命令行和工作台。什么是错误? –
命令行mysql和Workbench可能会有不同的设置,这可能会导致不同的结果集。具体来说,字符集设置用于解释来自数据库的数据。尝试比较设置。该命令是“显示变量”。 – 0xCAFEBABE
@AndreasWederbrand CL返回8,这是正确的,或者无论查询的正确金额是多少,但WB无论如何返回3。对不起,它不完全可读= -S – Janet