Подтвердить что ты не робот

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, пожалуйста?

Спасибо всем!

4b9b3361

Ответ 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