管理杂谈OA答疑ERP答疑教程搜索

SQL中碰到的坑之CASE WHEN


大家都知道,在MySQL中使用CASE WHEN语句,有许多优点:

1. 灵活性

CASE WHEN语句允许根据不同的条件执行不同的操作,使得查询结果更加灵活和个性化。

2. 可读性

使用CASE WHEN语句可以使查询语句更加清晰易懂,减少了嵌套IF语句的使用,提高了代码的可读性。

3. 可维护性

使用CASE WHEN语句可以使代码更易于维护和修改,减少了代码的复杂度。

4. 可扩展性

CASE WHEN语句可以根据需要添加更多的条件和操作,使得查询更加灵活和可扩展。

然而在使用CASE...WHEN...语句时,容易碰到以下两个坑。

5. 测试数据


SELECT * FROM case_when_test;


坑1. 忘记添加END关键字

在使用CASE...WHEN...语句时,每个WHEN子句后面都需要添加一个END关键字来结束整个CASE语句,否则会导致语法错误。


SELECT CASE WHEN gender = '1' THEN '男' WHEN gender = '0' THEN '女' FROM case_when_test;


报错信息如下:

坑2. 忘记添加ELSE子句

在CASE...WHEN...语句中,如果没有任何WHEN子句匹配条件,需要添加一个ELSE子句来定义默认值,否则会导致返回NULL值。


SELECT *, CASE WHEN gender = '1' THEN '男' WHEN gender = '0' THEN '女' END FROM case_when_test;


结果如下:

正确的语句应该是:


SELECT *, CASE WHEN gender = '1' THEN '男' WHEN gender = '0' THEN '女' ELSE '人妖' END FROM case_when_test;


结果如下:


更多精彩文章浏览...
点击右上角图标分享到朋友圈
官方网站:http://www.clicksun.cn
咨询热线:400-186-1886
服务邮箱:service@clicksun.cn