首页 > 数据库 > MySQL > 正文

mysql 生僻函数

2024-07-24 12:59:29
字体:
来源:转载
供稿:网友

1、coalesce  若为空,则取下一个值或字段

用法: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)

2、with rollup 分组统计数据后再计算汇总

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)

3、null的比较

当字段的值是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)


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表