在oracle中直接有decode函数 decode(cola,null,0)
表示如果cola为空,赋值为0
在mysql中的具体实现如下,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 mysql> describe book; +---------+--------------+------+-----+---------+----------------+ | Field   | Type         | Null | Key | Default | Extra          | +---------+--------------+------+-----+---------+----------------+ | book_id | bigint(20)   | NO   | PRI | NULL    | auto_increment | | name    | varchar(100) | NO   |     | NULL    |                | | number  | int(11)      | NO   |     | NULL    |                | +---------+--------------+------+-----+---------+----------------+ 3 rows in set (0.00 sec) mysql> select * from book; +---------+-------------------------+--------+ | book_id | name                    | number | +---------+-------------------------+--------+ |     123 | 123                     |    122 | |    1000 | Java程序设计             |      5 | |    1001 | 数据结构                 |      9 | |    1002 | 设计模式                 |     10 | |    1003 | 编译原理                 |     10 | |    1004 | MySQL从删库到跑路         |    100 | |    1005 | 活着                     |     10 | |    1232 | 11111                    |    124 | |    2001 | 测试                     |   2001 | |   10064 | 老鼠爱大米               |  10088 | |   10066 | 老鼠爱大米               |   1008 | |   10088 | 测试宝典                |   1008 | |   10096 | maven实战               |  10096 | |   11111 | 111111                  |  11111 | |   12311 | 都懂得                  |   1222 | |  123222 | 222                     |   1111 | +---------+-------------------------+--------+ 16 rows in set (0.00 sec) mysql> select if(count(b.book_id)=16,"十六","不是十六") '结果' from book b; +--------+ | 结果   | +--------+ | 十六   | +--------+ 1 row in set (0.00 sec) mysql> select case count(b.book_id) when 16 then '十六' else '其他' end as '结果' from book b; +--------+ | 结果   | +--------+ | 十六   | +--------+ 1 row in set (0.00 sec)