mysql - Mysql 在函数中截断了不正确的 DOUBLE 值
问题描述
我搜索并知道这已被多次询问,但我的似乎不同。我没有使用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
解决方案
看起来当您从函数返回布尔值时,这些值应该是数字。MySQL 尝试将 if 函数 (pw) 的第一个参数转换为数值并失败。
您可以使用代码:
create function `login_t`()
returns boolean
begin
declare `pw` varchar(32);
set `pw` = '4297f44b13955235245b2497399d7a93';
if (pw = MD5(CONCAT('123', '123'))) then
return true;
else
return false;
end if;
end;
推荐阅读
- laravel - Laravel MethodNotAllowedHttpException 无消息
- r - 零计数的交叉表
- android - Flutter - json_serializable fromJson:在 null 上调用了方法“[]”
- python - 如何引用不在索引中的列?
- fakeiteasy - 如何断言方法调用?
- r - 有没有办法在 ioslides(R Markdown)中使用 html 文件(布局)?
- mysql - 将 MySQL 脚本移植到 MS SQL -> 同步数据分配和检索
- java - Spring错误的参数数量异常
- javascript - 检查JS中的数组-列表是否排序?
- c - 在c中递归拆分数组