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
相关产品推荐
相关产品推荐

