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)
请改用CASE
CASE
WHEN languages LIKE '%*nl*%' THEN 1
WHEN languages NOT LIKE '%*nl*%' THEN 0
END as languages
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
56406 次 |
| 最近记录: |