11

我试图在 MySQL WHERE 语句中使用 IF...ELSE 函数但没有成功。

我有这个查询:

SELECT id 
FROM mytable 
WHERE restrcountry NOT LIKE '%*nl*%' 
  AND (IF languages LIKE '%*nl*%', 1, 0) = 1;

好的,这是我对 IF 语句的查询。

但是,我怎样才能使用“ELSE”呢?

例如,我想做类似的事情:

如果语言匹配nl ---> 选择语言为nl的 id 字段

ELSE IF language NOT match nl ---> 选择语言为en的 id 字段

请问如何在 MySQL 查询中执行此操作?

谢谢大家!

4

2 回答 2

18

的语法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

如果要条件选择列,可以IF直接在选择字段中使用:

SELECT IF(match, nl_column en_column) AS lang 
FROM table

请注意 where 子句中的表达式是TRUEor FALSE,所以写作

IF(expr, TRUE, FALSE)

是相同的

expr
于 2013-03-28T13:34:20.023 回答
8

改用 CASE

CASE
    WHEN languages LIKE '%*nl*%' THEN 1 
    WHEN languages NOT LIKE '%*nl*%' THEN 0
 END as languages 
于 2013-03-28T13:35:10.167 回答