2013-11-09 5 views
0

Я слепой, или что не так с моим запросом?mysql if then statement не работает?

select 
    STRCMP(message, 'LogMessage') = 1 
from 
    LogEntries; 

работает нормально. Однако

select 
    IF STRCMP(message, 'LogMessage') = 1 THEN 'bla' END IF 
from 
    LogEntries; 

возвращается:

У Вас есть ошибка в вашем SQL синтаксиса; в руководстве, соответствует версии сервера MySQL для корректного синтаксиса использовать вблизи «STRCMP (сообщение,„LogMessage“) = 1 Then„бла“END IF из LogEntries» в строке 2

Что неправильно это заявление?

+2

Синтаксис: IF (STRCMP (сообщение, 'LogMessage'), 'bla', null) 'http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html #function_if – rsanchez

+0

О, мужик, спасибо :) Хм, сбив с толку, потому что я посмотрел: http://dev.mysql.com/doc/refman/5.0/en/if.html. Хотя мой ресурс - неправильная страница. – toom

+0

Как говорится в документах, одна вещь - это оператор 'IF', а другой - это функция' IF'. В этом случае вам нужен последний. – rsanchez

ответ

0

Вы можете использовать случай, когда:

SELECT 
    CASE WHEN STRCMP(message, 'LogMessage') = 1 THEN 'bla' END AS your_column 
FROM 
    LogEntries; 

когда условие истинно оно будет возвращать «л» в противном случае, так как нет другой части, то он вернет NULL.