• ADADADADAD

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

    mysql数据库 时间:2024-11-26 22:17:15

    作者:文/会员上传

    简介:

    MySQL存储过程环境 5.6.14drop procedure if exists p;DELIMITER $$CREATE PROCEDURE `p` ()BEGINstart transaction;if(select 10 from dual where 1=1 < 5 ) then select

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    MySQL存储过程
    环境 5.6.14

      drop procedure if exists p;

      DELIMITER $$

      CREATE PROCEDURE `p` ()

      BEGIN

      start transaction;

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

      select 'true';

      else

      select 'false';

      end if;

      commit;

      END $$

      DELIMITER ;

      call p



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

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

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

    MySQL存储过程使用if子查询判断需要注意什么.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mysqlif