сообщение об ошибке операторов mariadb IF?

#javascript #mariadb

Вопрос:

Я тестирую 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
 

Этот запрос очень прост. Я не знаю, почему появляется сообщение об ошибке.

Ответ №1:

IF сам по себе не является запросом, он не может быть выполнен как отдельный оператор.

Есть два разных IF s, которые вы можете использовать.

Один из них-условная конструкция в составных операторах. Его можно использовать в сохраненных подпрограммах:

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

Или, если вы используете достаточно новую версию MariaDB (10.1 ), вы также можете использовать ее в анонимном блоке:

 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;