IF ...在WHERE子句MySQL中的ELSE

Dav*_*ter 10 mysql if-statement

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

我有这个问题:

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

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

但是,我怎样才能使用"ELSE"?

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

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

ELSE IF语言不匹配nl --->选择语言为en的 id字段

我怎么能在MySQL查询中这样做呢?

谢谢大家!

did*_*erc 16

语法IF是:

 IF(test_expr, then_expr, else_expr)
Run Code Online (Sandbox Code Playgroud)

所以你可以做类似的事情,IF(test1, result1, IF(test2, result2, else_result))但它不会非常易读,所以有这样的CASE表达.

CASE WHEN  test1 THEN result1
WHEN test2 THEN result2
ELSE else_result END
Run Code Online (Sandbox Code Playgroud)

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

SELECT IF(match, nl_column en_column) AS lang 
FROM table
Run Code Online (Sandbox Code Playgroud)

请注意,where子句中的表达式是TRUE或者FALSE,所以写

IF(expr, TRUE, FALSE)
Run Code Online (Sandbox Code Playgroud)

是相同的

expr
Run Code Online (Sandbox Code Playgroud)


sas*_*asi 8

请改用CASE

CASE
    WHEN languages LIKE '%*nl*%' THEN 1 
    WHEN languages NOT LIKE '%*nl*%' THEN 0
 END as languages 
Run Code Online (Sandbox Code Playgroud)