【问题标题】:mariadb IF statements error message?mariadb IF 语句错误信息?
【发布时间】:2018-01-27 03:35:23
【问题描述】:

我测试 sql 查询。

    IF 3 = 3 THEN 
       SELECT 'TRUE'
    ELSE
       SELECT 'FALSE'
    END IF;

我在 SQLyog 上执行了该查询。

我收到以下错误消息。

 You have an error in your SQL syntax; check the manual that corresponds to 
 your MariaDB server version for the right syntax to use near 'ELSE SELECT 
 'FALSE' END IF' at line 3

那个查询很简单。我不知道为什么会出现错误消息。

【问题讨论】:

    标签: mariadb mariasql


    【解决方案1】:

    IF 本身不是查询,不能作为独立语句执行。

    您可以使用两种不同的IFs。

    一个是conditional construct in compound statements。可用于存储例程:

    DELIMITER $
    CREATE PROCEDURE pr()
    BEGIN
        IF 3 = 3 THEN 
           SELECT 'TRUE';
        ELSE
           SELECT 'FALSE';
        END IF;
    END $
    DELIMITER ;
    CALL pr;
    

    或者,如果您运行的是相当新的 MariaDB 版本(10.1+),您也可以在 anonymous block 中使用它:

    DELIMITER $
    BEGIN NOT ATOMIC
        IF 3 = 3 THEN 
           SELECT 'TRUE';
        ELSE
           SELECT 'FALSE';
        END IF;
    END $
    DELIMITER ;
    

    另一个是IF函数,可以在内部查询中使用:

    SELECT IF(3 = 3 THEN 'TRUE','FALSE');
    

    【讨论】:

      【解决方案2】:

      您需要在每个内部语句的末尾使用分号,如下所示:

      IF 3 = 3 THEN 
         SELECT 'TRUE';
      ELSE
         SELECT 'FALSE';
      END IF;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-24
        • 2017-04-28
        • 1970-01-01
        • 1970-01-01
        • 2018-07-20
        • 2011-09-22
        • 2017-05-04
        • 2017-05-29
        相关资源
        最近更新 更多