Mysql 条件函数

1 IF

IF(expr1,expr2,expr3)

If expr1 is TRUE (expr1 <> 0 and expr1 <> NULL), IF() returns expr2. Otherwise, it returns expr3.

mysql> SELECT IF(1>2,2,3);  -> 3

mysql> SELECT IF(0, 1, 2);  -> 2 

mysql> SELECT IF(NULL,'yes','no');  -> 'no'

mysql> SELECT IF(STRCMP('test','test1'),'no','yes');  -> 'no'

 

2 CASE

CASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN result ...] [ELSE result] END

CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END

The first CASE syntax returns the result for the first value=compare_value comparison that is true. The second syntax returns the result for the first condition that is true. If no comparison or condition is true, the result after ELSE is returned, or NULL if there is no ELSE part.

select case dayofweek(current_date())
    when 1 then "Sunday"
    when 2 then    "Monday"
    when 3 then "Tuesday"
    when 4 then "Wednsday"
    when 5 then "Thursday"
    when 6 then "Friday"
    when 7 then "Saturday"
    else "Error Day"
end as dayOfWeek

 set @brand = 'xiaomi';
select case 
    when instr(@brand, 'xiaomi') > 0 then "小米"
    when instr(@brand, 'huawei') > 0 then "华为"
    when instr(@brand, 'oppo') > 0 then "欧珀"
    else "品牌未知"
end;

select case -- only first TRUE will return
    when FALSE then "0"
    when TRUE then "1" 
    when TRUE then "2"
    else "why"
end as test; 

 

参考文档:https://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html 

MySQL 中有多种用于条件筛选的函数,以下是一些常见的函数1. **IF 函数**:根据条件判断返回不同的值,语法为 `IF(expr1,expr2,expr3)`,如果 `expr1` 为真,则返回 `expr2`,否则返回 `expr3`。例如: ```sql SELECT IF(score >= 60, 'Pass', 'Fail') FROM students; ``` 2. **CASE 函数**:用于多条件判断,有两种形式。简单 CASE 函数和搜索 CASE 函数。 简单 CASE 函数示例: ```sql SELECT CASE grade WHEN 'A' THEN 'Excellent' WHEN 'B' THEN 'Good' ELSE 'Needs Improvement' END FROM courses; ``` 搜索 CASE 函数示例: ```sql SELECT CASE WHEN score >= 90 THEN 'Excellent' WHEN score >= 80 THEN 'Good' ELSE 'Needs Improvement' END FROM students; ``` 3. **WHERE 子句结合比较运算符**:使用比较运算符(如 `=`, `<`, `>`, `<=`, `>=`, `<>` 等)进行条件筛选。例如: ```sql SELECT * FROM products WHERE price > 100; ``` 4. **LIKE 运算符**:用于模糊匹配,通常结合 `%`(匹配任意数量的任意字符)和 `_`(匹配单个任意字符)使用。例如: ```sql SELECT * FROM customers WHERE name LIKE 'J%'; ``` 5. **BETWEEN 运算符**:用于筛选某个范围内的值。例如: ```sql SELECT * FROM orders WHERE order_date BETWEEN '2023-01-01' AND '2023-12-31'; ``` 6. **IN 运算符**:用于指定多个可能的值。例如: ```sql SELECT * FROM employees WHERE department_id IN (1, 2, 3); ``` 7. **AND、OR、NOT 逻辑运算符**:用于组合多个条件。例如: ```sql SELECT * FROM employees WHERE department_id >= 90 AND department_id <= 110 AND salary > 15000; ``` 同时,在统计数量时,可以在 `count` 函数内添加筛选条件,如 `count(number=1 and color = 'red' or NULL)` 这种形式也可用于筛选统计结果 [^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值