用法:select coalesce(a,b,c) a,b,c之间可多个
如果a==null,则选择b;如果b==null,则选择c;如果a!=null,则选择a;如果a b c 都为null ,则返回为null(没意义)。
MySQL> select name from test1;+--------+| name |+--------+| 小明 || 小王 || 小丽 || 小王 || 小明 || 小明 || NULL |+--------+7 rows in set (0.00 sec)mysql> select coalesce(name,'1') from test1;+--------------------+| coalesce(name,'1') |+--------------------+| 小明 || 小王 || 小丽 || 小王 || 小明 || 小明 || 1 |+--------------------+7 rows in set (0.00 sec)mysql> select coalesce(name,null,'11') from test1;+--------------------------+| coalesce(name,null,'11') |+--------------------------+| 小明 || 小王 || 小丽 || 小王 || 小明 || 小明 || 11 |+--------------------------+7 rows in set (0.00 sec)mysql> select coalesce(name,null,null,'111') from test1;+--------------------------------+| coalesce(name,null,null,'111') |+--------------------------------+| 小明 || 小王 || 小丽 || 小王 || 小明 || 小明 || 111 |+--------------------------------+7 rows in set (0.00 sec)
mysql> select name,sum(singin) from test1 group by name;+--------+-------------+| name | sum(singin) |+--------+-------------+| 小丽 | 2 || 小明 | 7 || 小王 | 7 |+--------+-------------+3 rows in set (0.00 sec)mysql> select coalesce(name,'总数'),sum(singin) from test1 group by name with rollup;+-------------------------+-------------+| coalesce(name,'总数') | sum(singin) |+-------------------------+-------------+| 小丽 | 2 || 小明 | 7 || 小王 | 7 || 总数 | 16 |+-------------------------+-------------+4 rows in set (0.01 sec)
当字段的值是null时,只能通过is null 或 is not null来查询,不能用=null 或!=null来查询。
若字段a的值是null,字段b的值是null,那么,a=b是会返回false的。可使用<=>运算符,那么,a<=>b会返回true。
mysql> select distinct a.name from test1 a,test1_copy b where a.name = b.name;+--------+| name |+--------+| 小明 || 小王 |+--------+2 rows in set (0.00 sec)mysql> select distinct a.name from test1 a,test1_copy b where a.name <=> b.name;+--------+| name |+--------+| 小明 || 小王 || NULL |+--------+3 rows in set (0.00 sec)
新闻热点
疑难解答