MySQL If заявление - PullRequest
       4

MySQL If заявление

4 голосов
/ 29 марта 2012

Я пытаюсь заставить это If Statement работать, но я не могу заставить его делать то, что я хочу. Если я сделаю select @result, он даст мне значение 0, тогда почему оператор IF не работает?

SET @message = '((sometihng here))';
select LEFT(@message, 1) into @firstChar;
select STRCMP(@firstChar,'(') into @result;
IF (@result = 0) THEN  
SET @message = 'true';
//more selects and cals here;
END IF;
select @message;

Я должен стать правдой, но я не вижу ошибки:

SQL query: IF( @result =0 ) THEN SET @message = 'true';

MySQL сказал:

1064 - у вас ошибка в синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера MySQL для правильного использования синтаксиса около 'IF (@result = 0) THEN SET @message =' true '' в строке 1

Ответы [ 3 ]

7 голосов
/ 29 марта 2012

попробуйте использовать функцию http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_if

SELECT IF(@result = 0, 'true', '((something here))') AS message
3 голосов
/ 21 сентября 2016

Синтаксис IF .. THEN .. ELSE в MySQL доступен только для процедурного кода (сохраненные предварительные определения, функции, триггеры ..), но не для операторов SELECT.

ЕСЛИ ИСПОЛЬЗУЕТСЯ В ПРОЦЕДУРЕ ХРАНЕНИЯ, НИЖЕ НИЖЕ

DELIMITER //

CREATE PROCEDURE NAME(IN Number INT)
BEGIN
    IF roll= 1 
          THEN  SELECT * FROM table1 WHERE id = roll;
    ELSE   
          SELECT * FROM table2 WHERE id = 2;
    END IF;
END //

DELIMITER ;
3 голосов
/ 29 марта 2012

Как отметил Макс Мара, это хорошая работа. Причина, по которой IF не работал, не в том, что синтаксис неправильный, а в том, что функции управления потоком, такие как IF ... THEN, действительны только внутри хранимых процедур или функций. Все это благодаря @ TehShrike

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...