2022
我们一起努力

MySQL存储过程使用if子查询判断需要注意什么 - MySQL数据库

这篇文章主要介绍了MySQL存储过程使用if子查询判断需要注意什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

MySQL存储过程
环境 5.6.14

  1. drop procedure if exists p;

  2. DELIMITER $$

  3. CREATE PROCEDURE `p` ()

  4. BEGIN

  5.     start transaction;

  6.     if(select 10 from dual where 1=1 < 5 ) then

  7.         select 'true';

  8.     else

  9.         select 'false';

  10.     end if;

  11.     commit;

  12. END $$

  13. DELIMITER ;

  14. call p

有时候为了省事,在if中使用子查询返回一个值,然后做比较.
就像上述的测试过程.
但是实际执行的时候,过程返回true.基本上忽略了select 的结果,都进入了true的分支.

我觉得MySQL是把where后面的判断作为了比较的内容,上述过程比较的似乎是 if ((1=1)<5),所以无论查询的是什么,都进入了true的分支

MySQL存储过程使用if子查询判断需要注意什么 - MySQL数据库

解决这个问题的方法也很简单.给子查询加括号
子查询加了括号之后的结果,就正确了,如下图所示.

感谢你能够认真阅读完这篇文章,希望小编分享的“MySQL存储过程使用if子查询判断需要注意什么”这篇文章对大家有帮助,同时也希望大家多多支持云,关注云行业资讯频道,更多相关知识等着你来学习!

赞(0)
文章名称:《MySQL存储过程使用if子查询判断需要注意什么 - MySQL数据库》
文章链接:https://www.fzvps.com/98995.html
本站文章来源于互联网,如有侵权,请联系管理删除,本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
图片版权归属各自创作者所有,图片水印出于防止被无耻之徒盗取劳动成果的目的。

评论 抢沙发

评论前必须登录!