IF... ELSE в выражении WHERE MySQL
Я пытаюсь использовать функцию IF... ELSE в инструкции MySQL WHERE без успеха.
У меня есть этот запрос:
SELECT id
FROM mytable
WHERE restrcountry NOT LIKE '%*nl*%'
AND (IF languages LIKE '%*nl*%', 1, 0) = 1;
Хорошо, это мой запрос с оператором IF.
Однако, как я могу использовать также "ELSE"?
Например, я хотел бы сделать что-то подобное:
Соответствие IF-языку nl --- > выбрать поле id, где nl
ELSE IF язык НЕ соответствует nl --- > выбрать поле id, где язык ru
Как я могу сделать это в запросе MySQL, пожалуйста?
Спасибо всем!
Ответы
Ответ 1
Синтаксис для IF
:
IF(test_expr, then_expr, else_expr)
чтобы вы могли сделать что-то вроде IF(test1, result1, IF(test2, result2, else_result))
, но это было бы не очень читаемо, поэтому для этой цели должно быть выражение CASE
.
CASE WHEN test1 THEN result1
WHEN test2 THEN result2
ELSE else_result END
Если вы хотите установить столбец select, вы можете использовать IF
в полях выбора напрямую:
SELECT IF(match, nl_column en_column) AS lang
FROM table
Обратите внимание, что выражение в предложении where равно TRUE
или FALSE
, поэтому запись
IF(expr, TRUE, FALSE)
совпадает с
expr
Ответ 2
используйте CASE вместо
CASE
WHEN languages LIKE '%*nl*%' THEN 1
WHEN languages NOT LIKE '%*nl*%' THEN 0
END as languages