我搜索了一下,知道这已经被问了很多次了,但我的似乎不一样。我没有用 update
也不是 and
. 由于下面的测试,我称之为“in function”,我真的很困惑。
功能:
drop function if exists `login_t`;
create function `login_t`()
returns bool
begin
declare `pw` varchar(32);
set `pw` = '4297f44b13955235245b2497399d7a93';
return if(pw, pw = MD5(CONCAT('123', '123')), false);
end;
select login_t(); -- > Truncated incorrect DOUBLE value: '4297f44b13955235245b2497399d7a93'
过程中:
drop procedure if exists `login_t2`;
create procedure `login_t2`()
begin
declare `pw` varchar(32);
set `pw` = '4297f44b13955235245b2497399d7a93';
select if(pw, pw = MD5(CONCAT('123', '123')), false);
end;
call login_t2(); -- 1
1条答案
按热度按时间vuktfyat1#
看起来当您从函数返回布尔值时,这些值应该是数字。mysql试图将if函数(pw)的第一个参数转换为数值,但失败了。
您可以使用代码: