You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL计算器函数用/运算符报错,改用DIV可正常执行求排查

为什么MySQL函数中用/做除法报错,改用DIV就正常?

嘿,这个问题我太熟悉了——根本原因是你设置的分隔符(delimiter)和除法运算符冲突了!

你看,你开头用了delimiter /,把MySQL的语句结束符改成了/。但紧接着在函数逻辑里,你又写了elseif signo='/' then set resultado=num1/num2;——这里的第二个/(除法运算)会被MySQL当成是语句结束符来解析,自然就会报错,因为它以为函数还没写完就遇到了分隔符。

而DIV是MySQL专门的整数除法关键字,它和你设置的分隔符/完全不沾边,所以不会触发解析冲突,执行自然就正常了。

那怎么解决用/做除法的问题呢?很简单,换一个和运算符号不冲突的分隔符就行,比如常用的//或者$$,修正后的代码如下:

delimiter //
create function calculadora (num1 int(25), num2 int(25), signo varchar (1)) 
returns decimal(25,2)
begin
    declare resultado decimal(25,2);
    if signo='+' then
        set resultado=num1+num2;
    elseif signo='-' then
        set resultado=num1-num2;
    elseif signo='*' then
        set resultado=num1*num2;
    elseif signo='/' then
        set resultado=num1/num2;
    end if;
    return resultado;
end //
delimiter ; -- 记得改回默认的分号分隔符

另外补充一点:DIV做的是整数除法(会舍去小数部分),而/是浮点数除法,返回带小数的结果,如果你需要保留小数的除法结果,还是得用/,只是要避免分隔符冲突的问题。

内容的提问来源于stack exchange,提问作者Carmelo Ricarte Rocamora

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:34:57